运算符
算数运算符
+、-、*、/、%、+=、-=、*=、/=、%=
如果 / 的所有对象都是整数,那么 / 的功能就是取整。例如:5 / 3 == 1
如果 / 有一个运算对象是实型(浮点数),那么 / 的功能就是除法运算
%(取余)运算符不能用于浮点数,例如5.0 % 2 会报错
+=、-=、*=、/=、%=复合运算时,一定要将右边看成一个整体
关系运算符
>、<、==、>=、<=、!=
逻辑运算符
&&逻辑与(A&&B):A、B同为真,结果才为真,A、B中只要有一个假,结果则为假。
注意逻辑与&&的短路特性
如果A为假,整个表达式为假,那么B的真假决定不了整个表达式的结果,所以不会再判断B的真假,就叫“短路特性”
||逻辑或(A||B):A、B同为假,结果才为假,A、B中只要有一个真,结果则为真。
注意逻辑或||的短路特性
如果A为真,整个表达式为真,那么B的真假决定不了整个表达式的结果,所以不会再判断B的真假,就叫“短路特性”
!逻辑非:!真==假 !假==真
在C语言中,除了0为假,其它都为真
位运算符(二进制位运算)
&按位与
语法:全1为1,有0为0
特点:和1相与保持不变,和0相与为0
场景:将指定位清0
|按位或
语法:有1为1,全0为0
特点:和1或置1,和0或保持不变
场景:将指定位置1
~按位取反
语法:0变1,1变0
例如:~1100 0011 == 0011 1100
^按位异或
语法:相同为0,不同为1
特点:和1异或取反,和0异或保持不变
场景:将指定位发生翻转
<<左移(乘法)
左边丢弃,右边补0。移动的位数不要超过自身的宽度
右移>>(除法)
右边丢弃,左边补0或补1,只能补全1或者补全0(编译器决定)
算术右移、逻辑右移都是编译器决定,用户无法确定
无符号数:右边丢弃,左边补0
有符号数:
正数:右边丢弃,左边补0
负数:右边丢弃,左边补0(逻辑右移)
负数:右边丢弃,左边补1(算术右移)
假设data为无符号数
高级应用
三目运算符
?:------------> 表达式 ?值1:值2
如果表达式为真,整个表达式的值为值1。如果表达式为假,则表达式的值为值2
自增自减运算符
++、--
如果是独立的一条语句,i++和++i,i--和--i没区别
复合运算的时候,++、--在运算对象的右边,先赋值后加减。例如x = y++,先将y赋值给x,再进行y+1。如果在左边,则先加减,再赋值。例如:x = ++y,先将y+1,在将y+1的值赋给x
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)