当前位置: 首页 > news >正文

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;

相关文章:

  • 安防监控/视频集中存储EasyCVR视频汇聚平台如何配置AI智能分析平台的接入?
  • 分布式锁—2.Redisson的可重入锁二
  • CSS - 妙用Sass
  • 字符串--子串匹配
  • Linux进程状态
  • BUUCTF [BJDCTF2020]EasySearch1
  • Android Flow 示例
  • Flutter 学习之旅 之 flutter 使用 flutter_screenutil 简单进行屏幕适配
  • 【算法】837. 连通块中点的数量
  • 后端-Java虚拟机
  • STM32引脚类型
  • 1.计算机基础知识
  • Milvus向量数据库部署
  • ?算法1-4 小A点菜
  • 解决DeepSeek服务器繁忙
  • 20250303-代码笔记-class CVRPTester
  • 【现代深度学习技术】卷积神经网络03:填充和步幅
  • BUU43 [BJDCTF2020]The mystery of ip 1
  • 通配符匹配在Redis中的实现
  • 爬虫不“刑”教程
  • 洞天寻隐·学林纪丨玉洞桃源:仇英青绿山水画中的洞天与身体
  • 售卖自制外挂交易额超百万元,一男子因提供入侵计算机系统程序被抓
  • 现场|万米云端,遇见上博
  • 南方地区强降雨或致部分河流发生超警洪水,水利部部署防范
  • “穿越看洪武”,明太祖及其皇后像台北故宫博物院南院展出
  • 胡塞武装称以色列所有机场均为其打击目标