C语言运算符总结

优先级


 最高的  ()[]  ->   .


!     ~       ++    --  -    (type)x/(type x)     *  &     sizeof


*     /       %      +     -


<<   >>


<    <=     >    >=


==     !=


&    ^      |     &&      ||      ?:


=     +=   -=    *=    /=   %=     <<=     >>=   &=   ^=   |=

最低的 ,    


结合方向  

除了  单  三   赋值运算符这三种是从右往左外,其他的都是从左往右


细节

++自增运算符 ,存在a++和++a两种情况

前者代表先传递值然后自加,后者代表先自加然后传递值


关系运算符的结果是一个逻辑值:关系成立则为真,值为1     关系不成立则为假,值为0


左移和右移位移的是存在内存中的二进制代码,即补码

左移一位等同于*2,且高位左移溢出了就丢弃 

 右移一位等同于/2,切低位超出也会被舍弃,右移时左边高位如果是无符号数则补0,有符号的称为算术右移,符号位如果是0则补0,符号位如果是1则补1

如(a+7)>>3     +7的存在用于解决右移过程中向负数取整的问题

~取反的操作包括符号位在内一并取反

位运算的操作对象必须是 char  short int

&按位与      与1不变    与0置0

|按位或        或0不变   或1置1

^按位异或   对应位相同为0   若不同则为1

a+=2与a=a+2等价  但是由于内部副本机制,效率上a+=2要高于后者

按位操作要秉承先清0后写入的顺序操作,如下

a&~(0x7<<27)|(0x5<<27)

&& || ! 逻辑运算 表达式的结果用真1或假0表示

0表示逻辑假值

-0 0.0 \0 NULL 等效

非0即表示逻辑真 如5 3 !0

逻辑||运算存在求值顺序,当左边为真时,右边即短路不再运算

如 0&& b=2 关系式左边已经为假,逻辑关系式结果必定为假0,那么右边的赋值运算便不再继续,称为短路





 






  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值