c/c++ 运算符的优先级和结合性ZZ 2010-05-18 15:29 Precedence Operator Description Example Associativity 1 () [] -> . :: ++ -- 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 right 2 ! ~ ++ -- - + * & (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 left 3 ->* .* Member pointer selector Member pointer selector ptr->*var = 24; obj.*var = 24; left to right 4 * / % Multiplication Division Modulus int i = 2 * 4; float f = 10 / 3; int rem = 4 % 3; left to right 5 + - Addition Subtraction int i = 2 + 3; int i = 5 - 1; left to right 6 << >> Bitwise shift left Bitwise shift right int flags = 33 << 1; int flags = 33 >> 1; left to right 7 < <= > >= Comparison less-than Comparison less-than-or-equal-to Comparison if( i < 42 ) ... if( i <= 42 ) ... if( i > 42 ) ... if( i >= 42 ) ... left to right greater-than Comparison geater-than-or-equal-to 8 == != Comparison equal-to Comparison 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 = fla...