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

c语言学习笔记(8)位运算符,++,--运算符的用法

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语言的底层控制能力会大幅提升!下一节可以继续学习条件运算符和逗号运算符。

http://www.jsqmd.com/news/206092/

相关文章:

  • 文献综述轻松搞定:百考通AI智能助手是如何成为科研工作者的“学术地图”?
  • 不连 Xcode,也能把 iPhone App 的实时日志看清楚
  • 交易所生死局:这套做市商系统如何让流动性枯井变涌泉?
  • MySQL定期备份
  • 双管齐下:百考通AI如何破解论文“查重”与“查AI”的双重困境
  • 前端:VUE2
  • 【计算机毕业设计案例】深度学习基于python的手势识别数字
  • 毕业论文全流程智能辅导指南:百考通AI如何化解写作难题
  • ToolBlock高级脚本之显示XYA和二维码
  • COMSOL——底层逻辑弱形式
  • 从0到1搭建RWA协议:链下资产上链的全链路攻略
  • 图吧工具箱最新绿色版,内置电脑cpu硬盘硬件多种检测工具,绿色免费
  • 四旋翼飞行器:从路径规划到轨迹跟踪的奇妙之旅
  • JavaScript作用域全解析:前端新人不再被变量“捉迷藏”搞晕(附实战
  • 三大删除命令:MySQL 核心用法解析
  • 2026年AI论文工具最新流出!8款免费神器实测,选题到降重一站式搞定!
  • 20260106_165519_大模型中的MCP、RAG、Agent定义及关系
  • 基于PLC的饮料灌装控制系统:从梯形图到组态画面的实现
  • 在claude code中使用glm模型出现Unable to connect to Anthropic services的解决方案
  • 比Everything更好用!文档内容搜索神器,检索文档内文字内容,提高工作效率
  • ACPI!ParseScope函数分析中的ACPI!ParseOpcode到ACPI!ParseTerm中的ACPI!ParsePackageLen
  • python--数据结构--链表
  • 原理:XinServer 是如何实现开箱即用的后端服务的?
  • 音乐喷泉博途V14与MCGS7.7触摸屏程序资料包2:探索奇妙的喷泉世界
  • 吐血推荐8个AI论文平台,助你轻松搞定本科毕业论文!
  • 长晶科技车规级稳压二极管:多系列全布局 护航汽车电子稳定运行
  • 震惊!14B小模型吊打72B大模型,MiA-RAG让AI从“盲人摸象“到“全局视野“
  • 网络安全从入门到进阶:快速掌握核心技术与防御体系
  • 深度学习毕设项目推荐-基于python深度学习的手势识别数字
  • UE5 C++(6):重写 beginPaly()、tick()、endPlay()函数