C language operator precedence (transfer)

Source - Author @embed_huang & https://blog.csdn.net/huangblog/article/details/8271791

Readers are advised to read the original text to ensure complete information.

C language operator precedence

priority

operator

name or meaning

use form

binding direction

illustrate

1

[]

array subscript

arrayname[const-expression]

left to right

--

()

parentheses

(expression)/function name (parameter list)

--

.

member selection (object)

object.membername

--

->

member selection (pointer)

Object pointer -> member name

--

 

2

-

minus operator

-expression

right to left

unary operator

~

bitwise negation operator

~expression

++

increment operator

++ variable name/variable name++

--

Decrement operator

--variable name/variable name--

*

value operator

*pointer variable

&

address operator

&variable name

!

Logical NOT Operator

!expression

( type )

coercion

(data type) expression

--

sizeof

length operator

sizeof(expression)

--

 

3

/

remove

expression/expression

left to right

Binary operator

*

take

expression * expression

%

remainder (modulo)

integer expression % integer expression

4

+

add

expression + expression

left to right

Binary operator

-

reduce

expression - expression

5

<< 

shift left

variable << expression

left to right

Binary operator

>> 

move right

variable >> expression

 

6

more than the

Expression > Expression

left to right

Binary operator

>=

greater or equal to

expression >= expression

less than

expression < expression

<=

less than or equal to

expression <= expression

7

==

equal

expression == expression

left to right

Binary operator

=

not equal to

expression != expression

 

8

&

bitwise AND

Expressions & Expressions

left to right

Binary operator

9

^

Bitwise XOR

expression^expression

left to right

Binary operator

10

|

bitwise OR

expression | expression

left to right

Binary operator

11

&&

logical and

expression && expression

left to right

Binary operator

12

||

logical or

expression || expression

left to right

Binary operator

 

13

?:

conditional operator

expression1?

expression2: expression3

right to left

Ternary operator

 

14

=

assignment operator

variable = expression

right to left

--

/=

Assignment after division

variable/=expression

--

*=

Multiply assignment

variable*=expression

--

%=

assignment after modulo

variable %=expression

--

+=

Assignment after addition

variable += expression

--

-=

assignment after subtraction

variable-=expression

--

<<=

左移后赋值

变量<<=表达式

--

>>=

右移后赋值

变量>>=表达式

--

&=

按位与后赋值

变量&=表达式

--

^=

按位异或后赋值

变量^=表达式

--

|=

按位或后赋值

变量|=表达式

--

 

15

逗号运算符

表达式,表达式,…

左到右

--

说明:

    同一优先级的运算符,运算次序由结合方向所决定。
    简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符



Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325459954&siteId=291194637