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 |
, |
逗号运算符 |
表达式,表达式,… |
左到右 |
-- |
说明:
同一优先级的运算符,运算次序由结合方向所决定。
简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符