C
语言运算符优先级
详细列表
运算符的优先级: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
|
/
|
除
|
表达式
/
表达式
|
左到右
|
双目运算符
|
*
|
乘
|
表达式
*
表达式
|
双目运算符
|
%
|
余数(取模)
|
整型表达式
/
整型表达式
|
双目运算符
|
4
|
+
|
加
|
表达式
+
表达式
|
左到右
|
双目运算符
|
-
|
减
|
表达式
-
表达式
|
双目运算符
|
5
|
<<
|
左移
|
变量
<<
表达式
|
左到右
|
双目运算符
|
>>
|
右移
|
变量
>>
表达式
|
双目运算符
|
6
|
>
|
大于
|
表达式
>
表达式
|
左到右
|
双目运算符
|
>=
|
大于等于
|
表达式
>=
表达式
|
双目运算符
|
<
|
小于
|
表达式
<
表达式
|
双目运算符
|
<=
|
小于等于
|
表达式
<=
表达式
|
双目运算符
|
7
|
==
|
等于
|
表达式
==
表达式
|
左到右
|
双目运算符
|
!=
|
不等于
|
表达式
!=
表达式
|
双目运算符
|
8
|
&
|
按位与
|
表达式
&
表达式
|
左到右
|
双目运算符
|
9
|
^
|
按位异或
|
表达式
^
表达式
|
左到右
|
双目运算符
|
10
|
|
|
按位或
|
表达式
|
表达式
|
左到右
|
双目运算符
|
11
|
&&
|
逻辑与
|
表达式
&&
表达式
|
左到右
|
双目运算符
|
12
|
||
|
逻辑或
|
表达式
||
表达式
|
左到右
|
双目运算符
|
13
|
?:
|
条件运算符
|
表达式
1?
表达式
2:
表达式
3
|
右到左
|
三目运算符
|
14
|
=
|
赋值运算符
|
变量
=
表达式
|
右到左
|
|
/=
|
除后赋值
|
变量
/=
表达式
|
|
*=
|
乘后赋值
|
变量
*=
表达式
|
|
%=
|
取模后赋值
|
变量
%=
表达式
|
|
+=
|
加后赋值
|
变量
+=
表达式
|
|
-=
|
减后赋值
|
变量
-=
表达式
|
|
<<=
|
左移后赋值
|
变量
<<=
表达式
|
|
>>=
|
右移后赋值
|
变量
>>=
表达式
|
|
&=
|
按位与后赋值
|
变量
&=
表达式
|
|
^=
|
按位异或后赋值
|
变量
^=
表达式
|
|
|=
|
按位或后赋值
|
变量
|=
表达式
|
|
15
|
,
|
逗号运算符
|
表达式
,
表达式
,
…
|
左到右
|
从左向右顺序运算
|
同一优先级的运算符,运算次序由结合方向所决定。
简单记就是:!
>
算术运算符
>
关系运算符
> && > || >
赋值运算符
C语言运算符优先级详细列表 运算符的优先级:C语言中,运算符的运算优先级共分为15级。1 级最高,15级最低。在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符优先级相同时,则按运算符的结合性所规定的结合方向处理。运算符的结合性:C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左)。例如算术运算符的结合性是自左至右,即先
右值:可以读的内存块(变量,常量,字面值)。
C语言
中的运算符包括:
算术运算符:+ (加) , - (减) ,* (乘) ,/ (除) ,%(取余,模运算) ,++ (自增) ,–(自减)
关系运算符:>(大于) ,<(小于) ,==(等于) ,!=(不等于)
C语言
运算符优先级
顺序如下所示:
自增运算符 ++ 和自减运算符 --,在作后缀运算符(如
表
达式 x++)时,较其用作前缀运算符(如
表
达式 ++x)时,具有较高的优先级。
+、-、* 和 & 运算符记号不但可以当作一元运算符(unary operator,只需要一个操作数),也可以当作二元运算符(binary operator,需要两个操作数)。例如,* 只有一个操作数的时候,就是间接运算符(indirection operator),而有两个操作数的时候,就是乘号。
文件:590m.com/f/2