http://en./w/cpp/language/operator_precedenceC++ Operator PrecedenceThe following table lists the precedence and associativity of C++ operators. Operators are listed top to bottom, in descending precedence.
When parsing an expression, an operator which is listed on some row will be bound tighter (as if by parentheses) to its arguments than any operator that is listed on a row further below it. For example, the expressions std::cout<<a&b and *p++ are parsed as (std::cout<<a)&b and*(p++), and not as std::cout<<(a&b) or (*p)++. Operators that are in the same cell (there may be several rows of operators listed in a cell) are evaluated with the same precedence, in the given direction. For example, the expression a=b=c is parsed as a=(b=c), and not as (a=b)=c because of right-to-left associativity. An operator's precedence is unaffected by overloading. NotesThe standard itself doesn't specify precedence levels. They are derived from the grammar. const_cast, static_cast, dynamic_cast, reinterpret_cast and typeid are not included since they are never ambiguous. Some of the operators have alternate spellings (e.g., and for See alsoOrder of evaluation of operator arguments at run time.
|
|