▼ 표 2-1 연산자 우선순위
분류 |
연산자 |
예제 |
우선순위를 감안한 해석 |
후위 |
++ --. |
a*b++ |
a*(b++) |
++b-- |
++(b--) |
||
a*b.foo() |
a*(b.foo()) |
||
전위 |
+ - ++ -- ! |
+a*b |
(+a)*b |
++a*b |
(++a)*b |
||
!a || b |
(!a) || b |
||
곱셈 |
*, /, % |
a*b + c |
(a*b) + c |
a – b%c |
a - (b*c) |
||
덧셈 |
+, - |
a + b and c |
(a + b) and c |
중위 |
이름이 붙은 중위 연산자들 |
a < b or b < c |
(a < (b or b)) < c |
a == b and b == c |
(a == b) and (b == c) |
||
비교 |
< > <= >= |
a < b == b < c |
(a < b) == (b < c) |
a < b && b < c |
(a < b) && (b < c) |
||
동등 |
== != |
a == b || b != c |
(a == b) || (b != c) |
논리곱(conjunction) |
&& |
a || b && c |
a || (b && c) |
논리합(disjunction) |
|| |
a && b || c |
(a && b) || c |
대입 |
= += -= *= /= %= |
a = b*c |
a = (b*c) |
a *= a + b |
a *= (a + b) |
우선순위가 같은 이항 연산자는 왼쪽에서 오른쪽으로 순서대로 계산된다.
a.foo().bar() // (a.foo()).bar() a * b % c // (a * b) % c (a == 1) or (b < 1) and (c > 1) // ((a == 1>) or (b < 1>)) and (c > 1)
이 책의 뒷부분에서 이 표를 더 세분화하는 연산을 그때그때 소개하겠다.