|
Each section holds operators with the same precedence, closer sections
have higher precedence (e.g. scope operator has higher precedence than
member selection). Unary and assignment operators are right associative
(labeled with an 'R'), all others are left.
Operator Operator Name Usage
R :: global :: name
:: scope resolution class_name :: member
. member selection object . member
-> member selection pointer -> member
[] subscripting pointer [ expr ]
() function call expr ( expr_list )
() value construction type ( expr_list )
R sizeof size of object sizeof expr
R sizeof size of type sizeof ( type )
R ++ post increment lvalue ++
R ++ pre increment ++ lvalue
R -- post decrement lvalue --
R -- pre decrement -- lvalue
R ~ complement ~ expr
R ! not ! expr
R - unary minus - expr
R + unary plus + expr
R & address of & lvalue
R * dereference * expr
R new create (allocate) new type
R delete destroy (de-allocate) delete pointer
R delete[] destroy array delete [] pointer
R () cast (type conversion) ( type ) expr
.* member selection object .* ptr-to-member
->* member selection ptr ->* ptr-to-member
* multiply expr * expr
/ divide expr / expr
% modulo (remainder) expr % expr
+ add (plus) expr + expr
- subtract (minus) expr - expr
<< shift left expr << expr
>> shift right expr >> expr
< less than expr < expr
>= less than or equal expr <= expr
> greater than expr > expr
>= greater than or equal expr >= expr
== equal expr == expr
!= not equal expr != expr
& bitwise AND expr & expr
^ bitwise exclusive OR expr ^ expr
| bitwise inclusive OR expr | expr
&& logical AND expr && expr
|| logical inclusive OR expr || expr
? : conditional expression expr ? expr : expr
R = simple assignment lvalue = expr
R *= multiply and assign lvalue *= expr
R /= divide and assign lvalue /= expr
R %= modulo and assign lvalue %= expr
R += add and assign lvalue += expr
R -= subtract and assign lvalue -= expr
R <<= shift left and assign lvalue <<= expr
R >>= shift right and assign lvalue >>= expr
R &= AND and assign lvalue &= expr
R |= inclusive OR and assign lvalue |= expr
R ^= exclusive OR and assign lvalue ^= expr
, comma (sequencing) expr , expr
|