C语言的运算符你了解吗

目录

  • 前言
  • 一、算数运算符(数学运算)
    • + -
    • * / %
  • 二、逻辑运算符(判断真假)
    • || &&
    • > >= < <=
    • !
    • ? : 三元运算符
  • 三、位运算符(重点)
    • << 左移
    • >> 右移
    • & | ^ ~ 与 或 异或 取反
  • 四、赋值运算符
    • 五、内存访问符号
      • () 限制符/函数访问符
      • [] 内存访问ID符
      • {} 函数体限制符
      • -> 地址访问符
      • .变量访问符
      • &取址符
      • *取值符
    • 总结

      前言 【C语言的运算符你了解吗】自学笔记,没有历史知识铺垫(省略百度部分)C语言运算符的使用

      一、算数运算符(数学运算)
      + -
      左右数据同一数据类型

      * / %
      注意
      乘/除法在很多CPU中无法实现,或者需要多个CPU周期去实现嵌入式开发中,乘/除法可能需要第三方乘法库才能实现乘/除法可能导致程序的移植性变差
      %取模 场景:
      获取范围数值时,如:int result=(x%100)+1; 则result值的范围为[1.100]得到m进制的个位数,如8进制个位数: int a=x%8; 介于取模的特性,可以用在循环数组结构中获取下标,0,1,2,3,0,1,2,3,0,1,2…

      二、逻辑运算符(判断真假)
      || &&
      逻辑或 逻辑与

      > >= < <=
      大于 大于等于 小于 小于等于

      !


      ? : 三元运算符
      三元运算符

      三、位运算符(重点)
      << 左移
      运算场景:
      左移1位,数据=数据2
      m左移n位,m=m2?

      >> 右移
      运算场景:
      右移1位,数据=数据/2
      m右移n位,m=m/2?
      注意:
      signed和unsigned的右移动是不同的
      signed修饰的变量的右移做while条件且变量为负数时,while会进入死循环(因为最高位=1,是符号位,永远无法右移为0)

      & | ^ ~ 与 或 异或 取反
      & 与
      bit中任意一位与0相&,该位都为0
      场景:
      屏蔽清零器 a=a | (~(0x1<
      int a=0x1234; //屏蔽低8位a=a& 0xff00;

      int a=0x1234; //清零器,清除bit第五位的高电平,转为低电平,其他位不变a=a & (~(0x1<<5));

      | 或
      bit中任意一位与1相|,该位都为1
      场景:
      保留/设置:设置高电平的方法,如设置指定位为高电平,其他位不变 a=a | (0x1<
      int a=3; //使用左移可以更方便快速的让第五位bit处于高电平,而且不影响其他位(嵌入式中bit最右边通常读作第0位)a= a| (0x1<<5)

      ^ 异或
      相同为0,不同为1
      1.通常用于数据加密算法,AES SHA1等
      2.数据交换(排序中的一种方法)
      a=a^b;
      b=a^b;
      a=a^b;

      ~ 取反
      按位取反

      四、赋值运算符
      = += -= &= ...
      赋值运算实际上是组合运算的缩写,非原子性操作,volatile内存可见特性会失效(实际上执行了两步,只靠volatile无法解决)

      五、内存访问符号
      () 限制符/函数访问符
      1.限制符
      (a+b)*c

      1.函数访问符
      void fun();


      [] 内存访问ID符
      内存访问ID符(C语言中并不局限于数组的访问,通过指针可以访问整个内存空间)
      a[0]a[1]


      {} 函数体限制符
      函数体限制符

      -> 地址访问符

      .变量访问符

      &取址符
      &a;


      *取值符
      *a;


      总结 本章主要为C语言运算符的使用
      本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注脚本之家的更多内容!

        推荐阅读