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