C + + operator precedence list

    技术2022-05-20  31

    PrecedenceOperatorDescriptionExampleAssociativity1()[]->.::++--Grouping operatorArray accessMember access from a pointerMember access from an objectScoping operatorPost-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 right2!~++---+*&(type)sizeofLogical negationBitwise complementPre-incrementPre-decrementUnary minusUnary plusDereferenceAddress ofCast to a given typeReturn size in bytesif( !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 selectorMember pointer selectorptr->*var = 24;obj.*var = 24;left to right4*/%MultiplicationDivisionModulusint i = 2 * 4;float f = 10 / 3;int rem = 4 % 3;left to right5+-AdditionSubtractionint i = 2 + 3;int i = 5 - 1;left to right6<<>>Bitwise shift leftBitwise shift rightint flags = 33 << 1;int flags = 33 >> 1;left to right7<<=>>=Comparison less-thanComparison less-than-or-equal-toComparison greater-thanComparison geater-than-or-equal-toif( i < 42 ) ...if( i <= 42 ) ...if( i > 42 ) ...if( i >= 42 ) ...left to right8==!=Comparison equal-toComparison not-equal-toif( 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 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 assignint 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

    最新回复(0)