主页 > 手机  > 

C语言基础知识02

C语言基础知识02
格式化输入输出   函数名:printf()

        格式控制符:%c        //把数据转换成字符型 cahr

                              %d        //把数据转换为有符号十进制整型 int short

                              %ld        // long

                              %f        //把数据转成单精度浮点型 flot

                              %d        //double

                              %s        //把数据转换为字符串

                              %p        //地址

                              %m.nd      // m 位宽        正数右对齐        负数左对齐,n 有效位

        printf("%8d", 1234);        //右对齐---    1234

        printf("%08d", 1234);        //空位置补0---00001234

        printf("%-8d", 1234);        //左对齐---1234

        printf("%.2f", 3.14159);        //保留有效两位---3.15

        printf("%f,%lf\n", 3.14,5.0);        //3.140000,5.000000,保留六位小数

注意:printf在使用时,一定要加上\n

  函数名:scanf()

        scanf("%d%d", &a, &b);        

注意:原样输入,不要忘记取地址符&,空格是默认的数据间隔符

缓冲区

printf()和scanf()使用了行缓冲

运算符

        优先级15级,数字越小优先级越高

  取值运算符:优先级 1

        ()        []        ->        .        

  单目运算符:优先级 2

        -        !        ++        --        sizeof

        (类型)强制转换        &取地址        *解地址        ~安位取反

   双目运算符:优先级 3~12      算数运算符:优先级 3~4

           *        /        %        +        -

     位移运算符:优先级 5

           <<        >>        

     关系运算符:优先级 6~7

           >        >=        <        <=        ==        !=

     逻辑运算符:优先级 8~12

           &         按位与        遇0为0,遇1不变------>理解为*(乘法)

           ^          按位异或    相同为0,不同为1

           |          按位或        遇1为1,遇0不变------>理解为+(加法)

          &&       逻辑与        前置条件为假,则后置条件不执行

           ||         逻辑或        前置条件为真,后置条件不执行

 三目运算符:优先级 13

           ? :

 赋值运算符:优先级 14

        =        +=        -=        *=        /=        %=        ~=

        <<=        >>=        &=        ^=        |=        

 逗号运算符:优先级 15

        , 

位运算

        6个位运算符:~  <<  >>  &  ^  |

        主要在MCU阶段,使用方法有固定公式,直接套用

清0

        int a=?;        //把第5位清0,其余位不变

        ????  ????  ????  ????  ????  ????  ????  ????

     & 1111  1111  1111  1111  1111  1111  1101  1111        

     ~  0000  0000  0000  0000  0000  0000 0010  0000

        a &= ~(0x01 << 5);

        把第5~7位清0:a &= ~(0x07 << 5);

置1

        int a=?;        //把第8位清1,其余位不变

        ????  ????  ????  ????  ????  ????  ????  ????

     |  0000  0000  0000  0000  0000  0001  0000  0000       

        ????  ????  ????  ????  ????  ???1  ????  ????

        a |= 0x01 << 8;

        把第18~24置1:a |= ~(0x7F << 18);        //0x7F == 0111 1111

        把[20:16]设置为 10110:

                a |= 0x1F << 16;

                a &= ~(0x01 << 16);

                a &= ~(0x01 << 19);

反转

        每次执行代码,让对应位置取反

                寄存器a第3位控制了一盏灯,当前灯是打开状态,但是不知道寄存器a中的值是什么,想要关灯,如何操作(把a中的第3位取反)

                0^1 == 1        1^1 == 1        取反

                0^0 == 0        1^0 == 1        不变

                a ^ = 0x01 << 3;

标签:

C语言基础知识02由讯客互联手机栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“C语言基础知识02