C-Operator Precedence!
| Priority level |
Operator |
Name or meaning |
Use form |
Combination direction |
Description |
| 1 |
[] |
Array subscript |
array name [constant expression] |
Left to right |
|
| () |
Parentheses |
(expression)/function name (formal parameter list) |
|
| . |
Member selection (object) |
Object. Member name |
|
| - |
Member selection (pointer) |
Object pointers, member names |
|
| 2 |
- |
Minus sign operator |
-expression |
Right to Left |
Monocular operator |
| Type |
Forcing type conversions |
(data type) expression |
|
| ++ |
Self-increment operator |
+ + variable name/variable name + + |
Monocular operator |
| -- |
Self-decrement operator |
--Variable name/variable name-- |
Monocular operator |
| * |
Value operator |
* Pointer variable |
Monocular operator |
| & |
Fetch address operator |
& Variable Name |
Monocular operator |
| ! |
Logical non-operator |
! An expression |
Monocular operator |
| ~ |
Bitwise inverse operator |
~ Expression |
Monocular operator |
| sizeof |
Length operator |
sizeof (expression) |
|
| 3 |
/ |
Except |
An expression/expression |
Left to right |
Binocular operator |
| * |
By |
Expression-expression * |
Binocular operator |
| % |
Remainder (modulo) |
Integer expression/integer expression |
Binocular operator |
| 4 |
+ |
Add |
An expression + an expression |
Left to right |
Binocular operator |
| - |
Reducing |
Expression-expression |
Binocular operator |
| 5 |
<< |
Move left |
Variables << expressions |
Left to right |
Binocular operator |
| >> |
Move right |
Variables >> expressions |
Binocular operator |
| 6 |
> |
Greater than |
Expressions > expressions |
Left to right |
Binocular operator |
| >= |
Greater than or equal |
Expression->= expression |
Binocular operator |
| < |
Less than |
Expressions < expressions |
Binocular operator |
| <= |
Less than or equal |
Expression-<= expression |
Binocular operator |
| 7 |
== |
Equals |
Expression-= = Expression |
Left to right |
Binocular operator |
| != |
Not equal to |
Expression! = Expression |
Binocular operator |
| 8 |
& |
Bitwise-AND |
Expressions & Expressions |
Left to right |
Binocular operator |
| 9 |
^ |
Bitwise XOR OR |
An expression ^ expression |
Left to right |
Binocular operator |
| 10 |
| |
Bitwise OR |
Expression-expression |
Left to right |
Binocular operator |
| 11 |
&& |
Logic and |
Expressions && Expressions |
Left to right |
Binocular operator |
| 12 |
|| |
Logical OR |
An expression | | An expression |
Left to right |
Binocular operator |
| 13 |
?: |
Conditional operators |
Expression 1? Expression 2: Expression 3 |
Right to Left |
Trinocular operator |
| 14 |
= |
Assignment operators |
variable = expression |
Right to Left |
|
| /= |
Assign value after addition |
Variable-/= expression |
|
| *= |
Multiply post-Assign value |
Variable-*= expression |
|
| %= |
Assign value after modulo |
Variable-%= expression |
|
| += |
Add after Assignment |
Variable + = expression |
|
| -= |
Reduced-value Assignment |
Variable-= expression |
|
| <<= |
Assign value after left shift |
Variable-<<= expression |
|
| >>= |
Assign value after right shift |
Variable->>= expression |
|
| &= |
Bitwise AND post-assigned values |
Variable-&= expression |
|
| ^= |
Bitwise XOR or post-assignment |
Variable-^= expression |
|
| |= |
Bitwise OR post-assigned value |
Variable-|= expression |
|
| 15 |
, |
Comma operator |
An expression, an expression, a... |
Left to right |
Left-to-right sequential operation |
| Description |
|
|
|
|
|
| Operators of the same precedence, with the order of operations determined by the binding direction |
Some error-prone priority issues
In the table above, how do you prioritize an expression if there are several operators with Priority 1? This is a confusing place for many beginners. These error-prone situations are sorted out in the following table:
650) this.width=650; "src=" Http://s1.51cto.com/wyfs02/M01/75/9E/wKioL1Y-7SWC2rc4AAJHHolg3W4790.jpg "title=" Note the priority. jpg "alt=" wkiol1y-7swc2rc4aajhholg3w4790.jpg "/>
Priority formula
parenthesis member first; parentheses operator [] () member operator. -
All monocular second; All monocular operators such as + + + (positive)-(negative) pointer operation *&
Multiplication Yozo, plus minus four; this "remainder" means the residual operation is%
Shift five, relationship six, shift operator:<< >>, relationship:> < >= <=, etc.
Equals (and) unequal row seventh; = = = = =
Bits and Xor and bits or; these are bitwise operations: Bits and (&) XOR (^) bits or (|)
"Three points of the world" eighty or ninety;
logical or heel; logical Operator: | | and &&
12 and 11; Note order: Priority (| |) Bottom-to-priority (&&)
The condition is higher than the assignment, the three-mesh operator precedence is ranked to 13-bit only than the assignment operator and the "," high
Lowest comma operation level! The comma operator has the lowest precedence
This article comes from "Life is endless, tossing and turning." "Blog, be sure to keep this provenance http://990487026.blog.51cto.com/10133282/1710694
"Note" C operator precedence formula easy wrong point