C++符号优先级
优先级 | 操作符 | 功能 | 用法 | 结合性 |
---|---|---|---|---|
1 | ()[]->.::++-- | Grouping operatorArray accessMember access from a pointerMember access from an object全局作用域Post-incrementPost-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 right |
2 | !~++---+*&(type)sizeof | Logical negationBitwise complementPre-incrementPre-decrementUnary minusUnary plusDereferenceAddress ofCast to a given typeReturn 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 left |
3 | ->*.* | Member pointer selectorMember pointer selector | ptr->*var = 24;obj.*var = 24; | left to right |
4 | */% | MultiplicationDivisionModulus | int i = 2 * 4;float f = 10 / 3;int rem = 4 % 3; | left to right |
5 | +- | AdditionSubtraction | int i = 2 + 3;int i = 5 - 1; | left to right |
6 | <<>> | Bitwise shift leftBitwise shift right | int flags = 33 << 1;int flags = 33 >> 1; | left to right |
7 | <<=>>= | Comparison less-thanComparison less-than-or-equal-toComparison greater-thanComparison geater-than-or-equal-to | if( i < 42 ) ...if( i <= 42 ) ...if( i > 42 ) ...if( i >= 42 ) ... | left to right |
8 | ==!= | Comparison equal-toComparison not-equal-to | if( i == 42 ) ...if( i != 42 ) ... | left to right |
9 | & | Bitwise AND | flags = flags & 42; | left to right |
10 | ^ | Bitwise exclusive OR | flags = flags ^ 42; | left to right |
11 | | | Bitwise inclusive (normal) OR | flags = flags | 42; | left to right |
12 | && | Logical AND | if( conditionA && conditionB ) ... | left to right |
13 | || | Logical OR | if( conditionA || conditionB ) ... | left to right |
14 | ? : | Ternary conditional (if-then-else) | int i = (a > b) ? a : b; | right to left |
15 | =+=-=*=/=%=&=^=|=<<=>>= | Assignment operatorIncrement and assignDecrement and assignMultiply and assignDivide and assignModulo and assignBitwise AND and assignBitwise exclusive OR and assignBitwise inclusive (normal) OR and assignBitwise shift left and assignBitwise 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 left |
16 | , | Sequential evaluation operator | for( i = 0, j = 0; i < 10; i++, j++ ) ... | left to right |