学习运算符优先级的原因
随着我们程序表达式的复杂程度越来越高,要想更好的理解表达式的含义,对我们掌握运算符的优先级提出了越来越高的要求。
C语言优先级表
运算符 结合性
() , [] ,-> . 自左向右
! , ~ , ++ , -- , - ,(type) , * , & ,sizeof 自左向右
* , / , % 自左向右
+ , - 自左向右
<< , >> 自左向右
< , <= , > , >= 自左向右
== , =! 自左向右
& 自左向右
^ 自左向右
| 自左向右
&& 自左向右
|| 自左向右
?: 自右向左
assignments 自右向左
, 自左向右
关于运算符优先级表的解释
1,优先级最高的其实不是真正意义上的运算符 ,包括:数组下标,函数调用操作符各结构成员选择操作符,他们都是自左向右结合。
2,单目运算符的优先级仅次于上面提到的运算符。
3,比单目运算符低的就是双目运算符。在双目运算符中,算术运算符的优先级最高,移位运算符次之,关系运算符再次之,接着是逻辑运算符,赋值运算符,最后是条件运算符。
关于运算符需要记住的两点
1,任何一个逻辑运算符都低于任何一个关系运算符
2,移位运算符的优先级比算术运算符的要低,但是比关系运算符的要高。