第1个回答 2006-08-20
下表从高到低列出了运算符的优先级。同一行中的运算符具有相同优先级,此时它们的结合方向决定求值顺序。
表格 15-1. 运算符优先级
结合方向 运算符 附加信息
非结合 new new
左 [ array()
非结合 ++ -- 递增/递减运算符
非结合 ! ~ - (int) (float) (string) (array) (object) @ 类型
左 * / % 算数运算符
左 + - . 算数运算符和字符串运算符
左 << >> 位运算符
非结合 < <= > >= 比较运算符
非结合 == != === !== 比较运算符
左 & 位运算符和引用
左 ^ 位运算符
左 | 位运算符
左 && 逻辑运算符
左 || 逻辑运算符
左 ? : 三元运算符
右 = += -= *= /= .= %= &= |= ^= <<= >>= 赋值运算符
左 and 逻辑运算符
左 xor 逻辑运算符
左 or 逻辑运算符
左 , 多处用到
第2个回答 2020-04-18
附录C
C语言运算符优先级和结合性
优先级
运算符
含义
运算类型
结合性
1
(
)
[
]
->
,
圆括号
下标运算符
指向结构体成员运算符
结构体成员运算符
单目
自左向右
2
!
~
++
--
(类型关键字)
+
-
*
&
sizeof
逻辑非运算符
按位取反运算符
自增、自尖运算符
强制类型转换
正、负号运算符
指针运算符
地址运算符
长度运算符
单目
自右向左
3
*
/
%
乘、除、求余运算符
双目
自左向右
4
+
-
加、减运算符
双目
自左向右
5
<<
>>
左移运算符
右移运算符
双目
自左向右
6
<
<=
>
>=
小于、大于、小于等于、大于等于
关系
自左向右
7
=
=
!=
等于、不等于
关系
自左向右
8
&
按位与运算符
位运算
自左向右
9
^
按位异或运算符
位运算
自左向右
10
|
按位或运算符
位运算
自左向右
11
&&
逻辑与运算符
位运算
自左向右
12
||
逻辑或运算符
位运算
自左向右
13
?
:
条件运算符
三目
自右向左
14
=
+=
-=
*=
/=
%=
<<
=
>>=
&=
^=
|=
赋值运算符
双目
自右向左
15
,
逗号运算
顺序
自左向右
第3个回答 2020-01-28
一元操作符优先级高于二元,求补的优先级比
交和并
高,交运算和并运算优先级相同