Operator Precedence Chart
Operator Type Operator Associativity
1. Primary Expression Operators () [] . -> expr++ expr-- left-to-right
2. Unary Operators * & + - ! ~ ++expr --expr right-to-left
(typecast) sizeof()
3. Binary Operators * / % left-to-right
+ -
>> <<
< > <= >=
== !=
&
^
|
&&
||
4. Ternary Operator ?: right-to-left
5. Assignment Operators = += -= *= /= %= >>= right-to-left
<<= &= ^= |=
6. Comma , left-to-right
Note: 1,2,3 etc above shows the level of precedence, with 1 being of highest precedence etc.
Associativities are from left to right....like normal arithematic expression, leaving the case of assignment operator, unary and ternary operator.
- Also note that in binary operators arithematic operators are of highest preference....... A for Arirthematic.
- Than follow relational operator...R for Relational operator(like < , > etc.)
- Than comes bitwise operator....B for Bitwise(eg...
- Than logical operator or Boolean operator...L....(eg. && etc)...
Notes:
Exception to MARBLE is bitwise shift operators which has higher precedence than Relational operators.
This can be noted by the fact that....>> has greater precedence than >.
Logical operator ! is of higher precedence being a unary operator.
Postfix is greater than prefix in precedence.
() is greater than [] in precedence...
C++
In case of C++, We have same precedence with some added operators.
1. :: operator is of higher precedence, with precedence = () operator.
2.
const_cast , dynamic_cast , reinterpret_cast , static_cast ,
typeid
+ we have:
() Type cast, i.e. (type) expr
sizeof() Size in bytes
new Dynamically allocate storage
new [] Dynamically allocate array
delete Dynamically free storage
delete [] Dynamically free array
That's it.
0 comments:
Post a Comment