2016.9.28 C语言课堂笔记--(字节)

C语言预课

字节讲解

  1. 大端存储法:在高位存储低字节

    小端存储法:在低位存储高字节

  2. ASC码表——共255个字符

  • ‘\0’ 0
  • ‘a’ 65
  • ‘A’ 97
  • ‘0’ 48
  • ' ' 32
  1. 运算符
  • 计算机在运算的时候只会计算相同类型数据的运算

  • 计算机中的数据以补码形式运算,以原码形式输出。

  • char--->short int--->int--->float--->double

    • int a=3;

      float b=5.0;

      float c=a/b;

      此时a=0.60000;

  • 后缀++

    -int a=3;

    int b=a++;//b=a,a=a+1;

    此时a=4,b=3

  • 前缀++

    -int a=3;

    int b=++a;//a=a+1,b=a;

    此时a=4,b=4

  • 后缀--

    -int a=3;

    int b=a--;//b=a,a=a-1;

    此时a=2,b=3

  • 前缀--

    -int a=3;

    int b=--a;//a=a-1,b=a;

    此时a=2,b=2

  1. 位运算符
  • 数据在计算机中是以补码的形式存储

  • int a=3;//0011

    int b=5;//0101

    • int c=a|b; (|有1为1)

      c=7;//0111

    • int c=a&b;(有0为0)

    c=1;//0001

    • int c=a^b; (不同为1)

    c=6;//0110

  • 原码:

  • 反码:正数反码与源码相同,负数的反码在原码的基础上,符号位不变,后面的数依次取反。

  • 补码:正数的补码与原码,反码相同;负数的补码在负数反码的基础上+1

    • 1=0001

    • 1(反)=0001

    • 1 (补)=0001

    • -1=1001

    • -1(反)=1110

    • -1(补)=1111

  • 取反:~

    • int a=3;

      int b=~a;//

      此时b=-4;

      a=0011 取反

    以补码形式存储=1100

    反码为=1011

    原码为=1100=-4;

    • int a=7;

    a=0000 0111 取反

    以补码形式存储=1111 1000

    反码为=1111 0111

    原码为=1000 1000

  1. <<左移
  2. 右移(以最高位符号位补全)

  • 7=0000 0111

    补码=0000 0111

    左移后=0000 1110

    右移后=0000 0011

  • -7原码=1000 0111

    反码=1111 1000

    补码=1111 1001

    <<1左移后=1111 0010

    反码=1111 0001

    原码=1000 1110

    1右移后=1111 1100

    反码=1111 1011

    原码=1000 0100

  1. 赋值运算符
  • +=,-=,/=,%=,&=.....

    b+=a;//b=b+a;

    -12 1000 1100

    1111 0011

    1111 0100

    1110 1000

    1110 0111
    1001 1000

  1. 关系运算符
  • 在C语言中,a>b看做一个事件,如果这个事件成立,运算结果是1,若不成立,结果是0.
  • < = == !=

  1. 逻辑运算符
  • ||:或 ((事件1)||(事件2)),只要有一个事件运算结果为1,整个结果就为1(有1为1)。
  • &&:与 ((事件1)||(事件2)),只要有一个事件运算结果为0,整个结果就为0(有0为0)。
  • !:非 !(事件),将事件的结果取反。
    • 逻辑运算时的注意点
    1. 事件1||事件2:如果事件1的运算结果为1,则事件2不会再被执行(1||a++,a++不运算)
    int a=5;
    int b=6;
    int d=a>b||b++;
    printf("d=%d\n",d);
    printf("b=%d\n",b);//d=1,b=7
    
    int d=a
    1. 事件1&&事件2:如果事件1的运算结果为0,则事件2不会再被执行(0&&a++,a++不运算)
    int a=5;
    int b=6;
    int d=a>b&&b++;
    printf("d=%d\n",d);
    printf("b=%d\n",b);d=0,b=6
    
    int d=a
    1. 计算机在进行关系运算遵循原则:非0即1((-1)&&1,结果为1)
  1. 地址运算符
  • &
  • printf(“%p\n,&a”)
  • %p是一个占位符,用来打印地址。
  1. 运算优先级

    ()-->!-->算数运算符-->关系运算符-->逻辑运算符(除了[!)](http://jingyan.baidu.com/article/9113f81b2ef68c2b3214c7e5.html)

    运算规律,单目运算符-->双目运算符-->三目运算符

    三目运算符:条件,事件1,事件2;

    运算规则:如果条件成立,就计算事件1的结果,作为整式的结果。否则计算事件2的结果。

    - int a=2,b=3
    - int max=a>b?a:b;
    
  2. scanf : scan formatter

    int a;

    scanf(“%d”,&a);(%d表示输入的是整数型,&a表示输入的这个数到&a所对应的存储单元)

    printf(“a=%d\n”,a);

    scanf的注意点:

    1. 严禁在scanf后面加\n

    2. 用scanf时老实点不耍花样

    3. scanf一次输入多个值:scanf(“%d%d”,&a,&b)

    4. 输入缓存流:\n,将输入缓存残留清空

      4.1. getchar():吸收缓存流里的一个字符。

      4.2. scanf(“%c”,&ch);

      4.3. getc(stdin):吸收缓存流里的一个字符。

    5. getchar:是专门对字符进行输入操作

      • char ch=getchar()
      • 是将输入缓存流里面的第一个字符取出来赋给ch
      • putchar 是专门对字符进行输出操作(可以是输出字符变量也可以是字符常量)
  3. 三大流程控制

    12.1. 顺序流程控制:代码是顺序执行
    12.2. 条件流控制:

    • if事件(单分支)

      {

        语句体
      

      }

    如果事件成立就执行{}里的事件。

    • if事件(双分支)

      {

        语句体
      

      }

      else

      {

        语句体
      

      }

    • if事件(多分支){

      }

      else if
      {

      }

      else if
      {

      }

      else
      {

      }

    • 分支结构注意点:

      • 只能执行一个分支
      • if中的语句中的else要么不放,要么放在if语句的最后面
      • if 语句下语句体如果只有一行代码,{}可以省略,多行代码时要加{}
  4. switch分支结构

    • switch (变量/变量表达式)

    • {

      case常量;

      语句体;

      break;

      default;

      语句体;

      break;
      }

    • switch只能匹配一个条件

    • case后面必须是常量;

    • 每一个case后面语句体执行以后必须要有break,break必须是跳出switch右边的

    • default可以省略,位置可以随便放。

    • case后面的语句可以不加{}就顺序执行

//习题1:输入一个成绩score;
0<=score<60;显示不及格;
60<=score<70;显示及格;
80<=score<85;显示良好;
85<=score<100;显示优秀;

//习题2:输入两个数,求最大值并输出。

//习题3:输入工资,如果少于等于1000,最后工资等于拿到的工资。如果大于1000,扣5%税。
//冒泡排序法:

int main()
{
    int a[5]={10,30,50,20,40};
    int i,j,temp;
    //小泡泡往前移
/*  for (i=0;i<4;i++)
    {
        for (j=i+1;j<5;j++)
        {
            if(a[i]b?a:b)>c?(a>b?a:b):c)>d?((a>b?a:b)>c?(a>b?a:b):c):d;

max=a>b?(a>c?(a>d?a:d): (c>d?c:d)): (b>c?(b>d?b:d): (c>d?c:d))```

//输入一个字母判断是否为大写字母或小写字母,输出提示。 

include "stdio.h"

int main()
{
char ch;
int i;
scanf("%c",&ch);
if(ch>=97&&ch<=123)//(ch>'a'&&ch<'z')
printf("是小写字母");
if(ch>=65&&ch<=81)
printf("是大写字母");

}

//输入一个字符串,判断字符串个数,遇空格跳过。
```#include "stdio.h"
int main()
{
    char character ;
    int i=0;
    while((character=getchar())!='\n')
    {
        if(character==' ')
        {
            continue;
        }
        i++;
    }
    printf("%d",i);
    return 0;
}```

你可能感兴趣的:(2016.9.28 C语言课堂笔记--(字节))