C语言中的运算符及其优先级
优先级 |
运算符 |
名称或含义 |
使用形式 |
结合方向 |
说明 |
1 |
[] |
数组下标 |
数组名 [ 常量表达式 ] |
左到右 |
|
() |
圆括号 |
(表达式) / 函数名 ( 形参表 ) |
| ||
. |
成员选择(对象) |
对象 . 成员名 |
| ||
-> |
成员选择(指针) |
对象指针 -> 成员名 |
| ||
2 |
- |
负号运算符 |
- 表达式 |
右到左 |
单目运算符 |
( 类型 ) |
强制类型转换 |
( 数据类型 ) 表达式 |
| ||
++ |
自增运算符 |
++ 变量名 / 变量名 ++ |
单目运算符 | ||
-- |
自减运算符 |
-- 变量名 / 变量名 -- |
单目运算符 | ||
* |
取值运算符 |
* 指针变量 |
单目运算符 | ||
& |
取地址运算符 |
& 变量名 |
单目运算符 | ||
! |
逻辑非运算符 |
! 表达式 |
单目运算符 | ||
~ |
按位取反运算符 |
~ 表达式 |
单目运算符 | ||
sizeof |
长度运算符 |
sizeof( 表达式 ) |
| ||
3 |
/ |
除 |
表达式 / 表达式 |
左到右 |
双目运算符 |
* |
乘 |
表达式 * 表达式 |
双目运算符 | ||
% |
余数(取模) |
整型表达式 / 整型表达式 |
双目运算符 | ||
4 |
+ |
加 |
表达式 + 表达式 |
左到右 |
双目运算符 |
- |
减 |
表达式 - 表达式 |
双目运算符 | ||
5 |
<< |
左移 |
变量 << 表达式 |
左到右 |
双目运算符 |
>> |
右移 |
变量 >> 表达式 |
双目运算符 | ||
6 |
> |
大于 |
表达式 > 表达式 |
左到右 |
双目运算符 |
>= |
大于等于 |
表达式 >= 表达式 |
双目运算符 | ||
< |
小于 |
表达式 < 表达式 |
双目运算符 | ||
<= |
小于等于 |
表达式 <= 表达式 |
双目运算符 | ||
7 |
== |
等于 |
表达式 == 表达式 |
左到右 |
双目运算符 |
!= |
不等于 |
表达式 != 表达式 |
双目运算符 | ||
8 |
& |
按位与 |
表达式 & 表达式 |
左到右 |
双目运算符 |
9 |
^ |
按位异或 |
表达式 ^ 表达式 |
左到右 |
双目运算符 |
10 |
| |
按位或 |
表达式 | 表达式 |
左到右 |
双目运算符 |
11 |
&& |
逻辑与 |
表达式 && 表达式 |
左到右 |
双目运算符 |
12 |
|| |
逻辑或 |
表达式 || 表达式 |
左到右 |
双目运算符 |
13 |
?: |
条件运算符 |
表达式 1? 表达式 2: 表达式 3 |
右到左 |
三目运算符 |
14 |
= |
赋值运算符 |
变量 = 表达式 |
右到左 |
|
/= |
除后赋值 |
变量 /= 表达式 |
| ||
*= |
乘后赋值 |
变量 *= 表达式 |
| ||
%= |
取模后赋值 |
变量 %= 表达式 |
| ||
+= |
加后赋值 |
变量 += 表达式 |
| ||
-= |
减后赋值 |
变量 -= 表达式 |
| ||
<<= |
左移后赋值 |
变量 <<= 表达式 |
| ||
>>= |
右移后赋值 |
变量 >>= 表达式 |
| ||
&= |
按位与后赋值 |
变量 &= 表达式 |
| ||
^= |
按位异或后赋值 |
变量 ^= 表达式 |
| ||
|= |
按位或后赋值 |
变量 |= 表达式 |
| ||
15 |
, |
逗号运算符 |
表达式 , 表达式 ,… |
左到右 |
从左向右顺序运算 |
说明:
同一优先级的运算符,运算次序由结合方向所决定