C-language operator precedence and formulas
There are 15 priority levels: operators of the same precedence, and the order of operations is determined by the binding direction
1 () []. --(parentheses, member row first)
2! ~-(minus) + +--& (take variable address) * (type) (mandatory) sizeof (single-mesh operation second)
3 */% (multiplication more)
4 +-(plus minus four)
5 >> << (Shift five)
6 > >= < <= (Relationship VI)
7 = = = (equals unequal row seventh)
8 & (Bit "and")
9 ^ ("XOR")
10 | (and Bit "or") three points to the world eighty or ninety
&& (logic "and")
12 | | (and "or") 11 and 12
13?: (conditional operator)
+ = = *=/=%= |= ^= &= >>= <<= (condition above assignment)
15, (comma priority lowest)
Binding: 2 13 14 is from right to left the other is from left to right there are problems can be in the communication
Bracket member first; The parentheses operator [] () member operator. -
The whole monocular second; All monocular operators such as + +,--、 + (positive),-(negative), pointer operations *, &
Multiplication Yozo, plus minus four; This "remainder" refers to the residual operation that is%
Shift five, relationship six; Shift operators:<< >>, Relationships:> < >= <=, etc.
Equal to (and) unequal row seventh; that is = = and! =
Bits and Xor and bits or; These are bitwise operations: Bits and (&) XOR (^) bits or (|)
"Three points of the world" eighty or ninety;
logic or heel; Logical operators: | | and &&
12 and 11; Note Order: Priority (| |) Bottom-to-priority (&&)
Conditions above assignment,//three mesh operator precedence to 13-bit only than assignment operator and "," high
Lowest comma operation level! The comma operator has the lowest 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 |
expression, expression,... |
Left to right |
Left-to-right sequential operation |
Description
Operators of the same precedence, the order of operations is determined by the binding direction.
Logic Operators && | | "Lazy Evaluation"
Simple Note is:! > Arithmetic operators > Relational operators > && > | | > Assignment Operators
Http://www.cnblogs.com/PegasusWang/articles/2874975.html
Operator precedence memory formulas and lists (goto)