c语言学习笔记(8)位运算符,++,--运算符的用法
2026/7/13 12:38:09 网站建设 项目流程

C语言学习笔记(8):位运算符、++、-- 运算符的用法

一、位运算符(Bitwise Operators)

C语言提供了6个位运算符,用于直接操作整数的二进制位(bit)。常用于底层编程、嵌入式、性能优化等场景。

运算符名称用法示例说明二进制示例(假设 a=5 (0101), b=3 (0011))
&按位与a & b对应位都为1才为1,否则为00101 & 0011 = 0001(1)
``按位或`ab`
^按位异或a ^ b对应位不同为1,相同为00101 ^ 0011 = 0110(6)
~按位取反~a所有位翻转(0变1,1变0)~0101 = 1010(补码表示-6)
<<左移a << n所有位向左移动n位,低位补00101 << 1 = 1010(10)
>>右移a >> n所有位向右移动n位(有符号数高位补符号位,无符号补0)0101 >> 1 = 0010(2)

实用技巧示例

  1. 判断奇偶数(比 %2 更快)

    if(num&1)printf("奇数");elseprintf("偶数");
  2. 交换两个数(不用临时变量)

    a^=b;b^=a;a^=b;
  3. 清除最低位的1(常用于位操作题)

    num=num&(num-1);// 例如 0100 & 0011 = 0000
  4. 获取最低位的1

    lowest_bit=num&-num;// 补码技巧
  5. 快速乘2 / 除2

    x=x<<1;// x *= 2x=x>>1;// x /= 2(无符号数或正数)
二、++ 和 – 运算符(自增自减)
运算符名称用法示例说明执行顺序与返回值
++自增++ii++将变量值加1前置++:先加后用,返回加后的值
后置++:先用后加,返回原值
--自减--ii--将变量值减1同上

关键区别:前置 vs 后置

inta=5;intb=++a;// 前置:a先加1变成6,然后b=6printf("a=%d, b=%d\n",a,b);// 输出 a=6, b=6intc=5;intd=c++;// 后置:先把c的原值5赋给d,然后c再加1printf("c=%d, d=%d\n",c,d);// 输出 c=6, d=5

常见陷阱(容易出错的代码)

inti=1;printf("%d\n",i+++++i);// 未定义行为!不同编译器结果不同(禁止这样写)intj=1;j=j++;// 未定义行为!结果不确定

正确使用建议

循环中的经典用法

for(inti=0;i<10;i++){// i++ 等价于 i = i + 1printf("%d ",i);}// 输出 0 1 2 ... 9
三、总结对比
运算符类型运算符优先级结合性常见用途
位运算~取反、位掩码
<< >>次高移位、快速乘除
&取特定位、清除位
^异或交换、校验
|设置位
自增自减++ –最高计数器、循环控制

学习建议

掌握这两部分,你对C语言的底层控制能力会大幅提升!下一节可以继续学习条件运算符和逗号运算符。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询