运算符的优先级:C语言中,运算符的运算优先级共分为 15 级。1 级最高,15 级最低。在
表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符优先级
相同时,则按运算符的结合性所规定的结合方向处理。
运算符的结合性:C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右
结合性(自右至左)。例如算术运算符的结合性是自左至右,即先左后右。如有表达式 x-y+z 则
y
“
应先与 -”号结合,执行 x-y 运算,然后再执行+z 的运算。这种自左至右的结合方向就称为
“
”
“
”
左结合性 。而自右至左的结合方向称为 右结合性 。最典型的右结合性运算符是赋值运算
符。如 x=y=z,
“
由于 =”的右结合性,应先执行 y=z 再执行 x=(y=z)运算。C语言运算符中有不少
为右结合性,应注意区别,以避免理解错误。
优先级
运算符
名称或含义
使用形式
结合方向
说明
1
[]
数组下标
数组名[常量表达式]
左到右
()
圆括号
(表达式)/函数名
(形参表)
.
成员选择(对
象)
对象.成员名
->
成员选择(指
针)
对象指针->成员名
2
-
负号运算符
-表达式
右到左
单目运算
符
(类型)
强制类型转换
(数据类型)表达式
++
自增运算符
++变量名/变量名++
单目运算
符
--
自减运算符
--变量名/变量名--
单目运算
符
*
取值运算符
*指针变量
单目运算
符
&
取地址运算符
&变量名
单目运算
符
!
逻辑非运算符
!表达式
单目运算
符
~
按位取反运算符
~表达式
单目运算
符
sizeof
长度运算符
sizeof(表达式)
3
/
除
表达式/表达式
左到右
双目运算
符
*
乘
表达式*表达式
双目运算