C语言优先级

来源:互联网 发布:兰州辉煌软件 编辑:程序博客网 时间:2024/05/17 20:27

 

 

 

 

PrecedenceOperatorDescriptionExampleAssociativity1()

 

[]

->

.

::

++

--

Grouping operator

 

Array access

Member access from a pointer

Member access from an object

Scoping operator

Post-increment

Post-decrement

(a + b) / 4;

 

array[4] = 2;

ptr->age = 34;

obj.age = 34;

Class::age = 2;

for( i = 0; i < 10; i++ ) ...

for( i = 10; i > 0; i-- ) ...

left to right2!

 

~

++

--

-

+

*

&

(type)

sizeof

Logical negation

 

Bitwise complement

Pre-increment

Pre-decrement

Unary minus

Unary plus

Dereference

Address of

Cast to a given type

Return size in bytes

if( !done ) ...

 

flags = ~flags;

for( i = 0; i < 10; ++i ) ...

for( i = 10; i > 0; --i ) ...

int i = -1;

int i = +1;

data = *ptr;

address = &obj;

int i = (int) floatNum;

int size = sizeof(floatNum);

right to left3->*

 

.*

Member pointer selector

 

Member pointer selector

ptr->*var = 24;

 

obj.*var = 24;

left to right4*

 

/

%

Multiplication

 

Division

Modulus

int i = 2 * 4;

 

float f = 10 / 3;

int rem = 4 % 3;

left to right5+

 

-

Addition

 

Subtraction

int i = 2 + 3;

 

int i = 5 - 1;

left to right6<<

 

>>

Bitwise shift left

 

Bitwise shift right

int flags = 33 << 1;

 

int flags = 33 >> 1;

left to right7<

 

<=

>

>=

Comparison less-than

 

Comparison less-than-or-equal-to

Comparison greater-than

Comparison geater-than-or-equal-to

if( i < 42 ) ...

 

if( i <= 42 ) ...

if( i > 42 ) ...

if( i >= 42 ) ...

left to right8==

 

!=

Comparison equal-to

 

Comparison not-equal-to

if( i == 42 ) ...

 

if( i != 42 ) ...

left to right9&Bitwise ANDflags = flags & 42;left to right10^Bitwise exclusive ORflags = flags ^ 42;left to right11|Bitwise inclusive (normal) ORflags = flags | 42;left to right12&&Logical ANDif( conditionA && conditionB ) ...left to right13||Logical ORif( conditionA || conditionB ) ...left to right14? :Ternary conditional (if-then-else)int i = (a > b) ? a : b;right to left15=

 

+=

-=

*=

/=

%=

&=

^=

|=

<<=

>>=

Assignment operator

 

Increment and assign

Decrement and assign

Multiply and assign

Divide and assign

Modulo and assign

Bitwise AND and assign

Bitwise exclusive OR and assign

Bitwise inclusive (normal) OR and assign

Bitwise shift left and assign

Bitwise shift right and assign

int a = b;

 

a += 3;

b -= 4;

a *= 5;

a /= 2;

a %= 3;

flags &= new_flags;

flags ^= new_flags;

flags |= new_flags;

flags <<= 2;

flags >>= 2;

right to left16,Sequential evaluation operatorfor( i = 0, j = 0; i < 10; i++, j++ ) ...left to right

 

 

 

 

原创粉丝点击