Operation priority in C language
| 运算符 | 结合性 |
|---|---|
| () [] -> . | 自左向右 |
| ! ~ ++ – - (type) * & sizeof | 自右向左 |
| 自左向右 |
| 自左向右 |
| << >> | 自左向右 |
| < <= > >= | 自左向右 |
| == != | 自左向右 |
| & | 自左向右 |
| ^ | 自左向右 |
| I | 自左向右 |
| && | 自左向右 |
| II | 自左向右 |
| ?: | 自右向左 |
| assignments(=) | 自右向左 |
| , | 自左向右 |
Table 1
可见
* 优先级最高的其实并不是真正意义上的运算符
* 单目运算符优先级仅次于前述运算符
* 双目运算符:
算术运算符>移位运算符>关系运算符>逻辑运算符>赋值运算符>条件运算符
注意两点:
1. 任何一个逻辑运算符的优先级低于任何一个关系运算符
2. 移位运算符的优先级比算数运算符要低,但是比关系运算符要高
- 算数运算符之间的优先级关系显而易见.
- 但是6个关系运算符的优先级并不相同, 运算符== 和!=的优先级要低于其他关系运算符的优先级.
- 任何按位逻辑运算符优先级要高于一般逻辑运算符,每个“与”运算符要高于“或”运算符.
- 三目运算符优先级高于赋值运算符.
- 逗号运算符优先级最低.
本文介绍了C语言中运算符的优先级规则,包括单目运算符、双目运算符如算术、移位、关系、逻辑和赋值运算符的优先级比较。特别指出逻辑运算符优先级低于关系运算符,移位运算符优先级介于算术和关系运算符之间。此外,还提到了关系运算符内部、位逻辑运算符、三目运算符和赋值运算符的优先级关系。
4万+

被折叠的 条评论
为什么被折叠?



