C++ Operators, Precedence and Associativity

The C++ language includes all C operators and adds several new operators. Operators specify an evaluation to be performed on one or more operands.

Operator precedence specifies the order of operations in expressions that contain more than one operator. Operator associativity specifies whether, in an expression that contains multiple operators with the same precedence, an operand is grouped with the one on its left or the one on its right. The following table shows the precedence and associativity of C++ operators (from highest to lowest precedence). Operators with the same precedence number have equal precedence unless another relationship is explicitly forced by parentheses.

C++ Operator Precedence and Associativity

Operator Description

Group 1 precedence, no associativity

Scope resolution

Group 2 precedence, left to right associativity

Member selection (object or pointer)

Array subscript

Function call

Postfix increment

Postfix decrement

Type name

Constant type conversion

Dynamic type conversion

Reinterpreted type conversion

Static type conversion

Group 3 precedence, right to left associativity

Size of object or type

Prefix increment

Prefix decrement

One's complement

Logical not

Unary negation

Unary plus

Address-of

Indirection

Create object

Destroy object

Cast

Group 4 precedence, left to right associativity

Pointer-to-member (objects or pointers)

Group 5 precedence, left to right associativity

Multiplication

Division

Modulus

Group 6 precedence, left to right associativity

Addition

Subtraction

Group 7 precedence, left to right associativity

Left shift

Right shift

Group 8 precedence, left to right associativity

Less than

Greater than

Less than or equal to

Greater than or equal to

Group 9 precedence, left to right associativity

Equality

Inequality

Group 10 precedence left to right associativity

Bitwise AND

Group 11 precedence, left to right associativity

Bitwise exclusive OR

Group 12 precedence, left to right associativity

Bitwise inclusive OR

Group 13 precedence, left to right associativity

Logical AND

Group 14 precedence, left to right associativity

Logical OR

Group 15 precedence, right to left associativity

Conditional

Group 16 precedence, right to left associativity

Assignment

Multiplication assignment

Division assignment

Modulus assignment

Addition assignment

Subtraction assignment

Left-shift assignment

Right-shift assignment

Bitwise AND assignment

Bitwise inclusive OR assignment

Bitwise exclusive OR assignment

Group 17 precedence, right to left associativity

throw expression

Group 18 precedence, left to right associativity

Comma

See Also

Reference

C++ Operators

Operator Overloading