C++ Language Operator Precedence Table

This page last
updated on:

May 16, 2001

Contents and Related Links

CodeWrangler Pages

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

This page constructed by Cliff Green, Copyright © 2001.