美文网首页
C语言中运算符优先级

C语言中运算符优先级

作者: 大兔子先生 | 来源:发表于2018-01-23 15:49 被阅读0次

今天写代码被一个Bug卡了很久,认真定位后发现是运算符优先级不明导致的,一直以为移位运算符(>>,<<)既然被当成乘和除来使用,那其优先级自然也像乘除(*,/)一样,比加和减(+,-)高,事实上想当然了,(+,-)的优先级是比(>>,<<)高的,例如,计算2的5次幂减1,(1<<5-1)得到的结果却是16。因此,对运算符有一个较为深刻的记忆还是有必要的,可以避免编码时无意间引入bug。

C语言中运算符中优先级如表1。

表1
可以看出运算符的优先级别较多,共有15个优先级,而运算符的数量则更多,精准记忆是比较困难的,因此有人编了几句口诀,以助记忆,我觉得还不错,有帮助。
参考http://blog.csdn.net/skywalker_leo/article/details/6237222

初等单目一二级 // 初等运算符和单目运算符分别是第1、2优先级
乘除求余加减移// 这句里面的运算符全归为算术运算符,移表示移位
关系等于不等于 // 关系运算符(< <= > >=)
按位与来异或或 // 位运算符优先级顺序: & -> ^ -> |
逻辑与或条件弱 // 逻辑运算符优先级顺序: && -> ||,后面跟着优先级比较低(弱)的条件运算符
赋值逗号一点破 // 赋值,逗号最低

相关文章

  • C 语言练习1

    1. 关系运算符 <= 的优先级高于 == 2. C语言中函数可以嵌套调用,但是不可嵌套定义. 3. C语言中变量...

  • C/C++学习笔记

    C/C++运算符优先级 简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符同优先级...

  • C运算符的优先级与结合性

    C语言运算符优先级与结合性:同一优先级的运算符,运算次序由结合方向所决定。 c语言运算符优先级存在的问题(按照常规...

  • 运算符优先级和类型长度

    C语言运算符优先级 类型长度

  • C语言运算符优先级列表

    C语言运算符优先级列表(超详细)

  • 7.Go语言运算符

    运算符的操作方法 Go 语言中的运算符均是从左至右结合 运算符具有优先级(从高到低)!* / % << >> & ...

  • C语言中运算符优先级

    今天写代码被一个Bug卡了很久,认真定位后发现是运算符优先级不明导致的,一直以为移位运算符(>>,<<)既然被当成...

  • Go语言学习笔记05.运算符

    算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 其他运算符 运算符优先级 在Go语言中,一元运算符拥有最...

  • python关于&&和||的问题

    &&和||是多数高级语言中通用的逻辑运算符,表示并和或,诸如C语言、C++、JAVA等主流语言但是在python语...

  • 16_位运算符分析

    关键词: C语言中的位运算符、 左移和右移注意点、位运算防错准则、 位运算符和逻辑运算符的区别 1. C语言中的位...

网友评论

      本文标题:C语言中运算符优先级

      本文链接:https://www.haomeiwen.com/subject/eebsaxtx.html