C语言运算符优先级等级口诀
[圆方括号、箭头一句号]
  [自增自减非反负、针强地址长度]
  [乘除,加减,再移位]
  [小等大等、等等不等]
  [八位与],[七位异],[六位或],[五与],[四或],[三疑],[二赋],[一真逗]
  (其中“[]”号为一个等级分段)
说明:
  “圆方括号、箭头一句号”
指的是第15级的运算符。其中【圆方括号】为“()、[]”,【箭头】指的是指向结构体成员运算符“->”,【句号】指的是结构体成员运算符“.” ;运算符优先级按从高到低排列
  “自增自减非反负、针强地址长度”
指的是第14级的运算符。其中【非】指的是逻辑运算符“!”,【反】指的是按位取反运算符“~”,【负】指的是负号运算符“-”,【针】指的是指针运算符“*”,【强】指的是强制类型转换运算符,【地址】指的是地址运算符“&”,【长度】指的是长度运算符“sizeof ”;
  “乘除,加减,再移位”
【移位】指的是左移运算符“<<”和右移运算符“>>”,其中【除】还包括了 取余运算符“%”;
  “小等大等、等等不等”
【小等大等】指的是第10级到第9级的运算符:<、<=、>和>=,【等等】指的是等于运算符“==”,【不等】指的是不等于运算符“!=”;
  “八位与,七位异,六位或”
【八位与】指的是第8级的 按位与 运算符“&”,【七位异】指的是第7级的按位异或 运算符“^”,【六位或】指的是第6级的按位或运算符“||”;
  “五与,四或”
【五与】指的是第5级的逻辑与运算符“&&”,【四或】第4级和逻辑或运算符“||”;
  “三疑,二赋,一真逗”
指的是第3级到第1级的运算符。其中,【三疑】指的是条件运算符“?:” (三有双重含义:即指优先级别是三,它的运算符类型也是三目,疑也取“?”之意),【二赋】指的是赋值运算符=、+=、-=、*=、/=、%=、>>=、<<=、&=、^=和|= ,【一真逗】指的是第1级的“,”运算符,真字只是为了语句需要罢了。
  由于C语言的运算符优先级与C++的不完全一样(主要是增加了几个运算符),所以这个口诀不能完全实用于C++.但是应该能够兼容,大家可以比较一下他们的区别应该就能够很快掌握C++的优先级的!
=====运算符的优先级与结合律(从高到低排列)=====
运算符  ………………………………………………  结合律
( )  [ ]  ->  .  …………………………………………  从左至右
!  ~  ++  --  (类型) sizeof +  -  *  &  …………    从右至左
*  /  %  ………………………………………………  从左至右
+  -  …………………………………………………  从左至右
<<  >>  ……………………………………………  从左至右
<  <=  >  >=  ……………………………………  从左至右
==  !=  ……………………………………………    从左至右
&  ……………………………………………………  从左至右
^  ……………………………………………………  从左至右
|  ……………………………………………………  从左至右
&&  …………………………………………………  从左至右
||  ……………………………………………………  从右至左
?:  ……………………………………………………  从右至左
=  +=  -=  *=  /=  %=  &=  ^= |=  <<=  >>=  … 从左至右
第一、像() [] -> .之类的理所当然是最优先的,其实它们压根也不算什么运算符了 第二、除了上面的四
种运算符之外,接下来就是单目运算符,也就是! ~ ++ -- - (type) * & sizeof 了。记住它们的顺序可是自右向左啊!其实结合实例是很容易理解的,比如i++等。 第三、跟着就是双目运算符了,也是C语言运算符优先级中最容易让人混淆的地方了。其 实也没有那么可怕,你认真观察就会发现。在双目运算符中,算术运算符优先级最高,然后是移位运算符,接着是关系运算符,再着是逻辑运算符。不过这边需要说的是,在关系运算符中,< <= > >=比== !=的优先级来得高。此外,在逻辑运算符中,与运算又比或运算优先级来得高,异或则处于二者之间。同样的,你可以类比出&&与||的优先级关系. 第四、在双目操作符之后,就是三目操作符了,没有什么好说的了。 第五、然后是赋值操作符,你也许会把赋值操作符与三目运算符的优先级搞混。没有关系,我想你一定写过这样的语句(如果没有,请你记住!):max = (a>b)?a:b; ,从这个语句里,你就不难记住赋值运算符为什么比三目运算符的优先级低了! 第六、逗号运算符是分割各个子语句的(感觉这么说有点不准确,不过我想大家会明白我的意思的),自然优先级最低了,我想这个应该不是很容易混淆的。 总结一下,按运算符优先级从高到低:单目运算符->双目运算符->三目运算符->赋值运算符->逗号运算符 特别在双目运算符中,按 运算符优先级从高到低:算术运算符->移位运算符->关系运算符(其中== 和 !=优先级又较低)->逻辑运算符(按位与-〉按位异或-〉按位或-〉逻辑与-〉逻辑或)!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。