Previous section
To contents
Next section
5.8 Operator precedence
When evaluating an expression, you can always use parenthesis to tell the compiler in which order to evaluate things. Normally, the compiler will evaluate things from left to right, but it will evaluate operators with higher priority before those with lower. The following table shows the relative priority of all the operators in descending order:
(a) a() a[b] a->b a[b..c] ({}) ([]) (<>)
!a ~a (type)a ++a --a
a++ a--
a*b a/b a%b
a+b a-b
a>>b a<<b
a>b a>=b a<b a<=b
a==b a!=b
a&b
a^b
a|b
&&
||
a?b:c
=
@a
,
Examples:
The expression
is evaluated in this order:
1+2*2
1+(2*2)
1+2*2*4
1+((2*2)*4)
(1+2)*2*4
((1+2)*2)*4
1+4,c=2|3+5
(1+4),(c=((2|3)+5))
1+5 & 4 == 3
(1+(5 & 4)) == 3
c=1,99
(c=1),99
!a++ + ~--a()
(!(a++)) + (~((--a)()))
Previous section
To contents
Next section