연산자 우선순위
연산자 우선순위 (Operator Precedence)
하나의 표현식 안에 서로 다른 연산자들이 가까이 있을 때, 연산자들이 어떻게 묶이는지를 정하는 게 연산자 우선순위예요. 예를 들어 *는 +보다 우선순위가 높아요. 그래서 a + b * c라는 표현식은 b와 c를 곱한 다음 그 곱에 a를 더한다는 뜻이에요(즉 a + (b * c)).
출처: 문서
본문
괄호를 쓰면 연산자들의 우선순위를 무시할 수 있어요. 우선순위 규칙은 "괄호를 직접 쓰지 않았을 때 괄호가 어디에 있다고 가정하는지"를 말해 준다고 생각하면 돼요. 사실 연산자를 특이하게 조합할 때는 괄호를 쓰는 게 현명해요. 프로그램을 읽는 다른 사람들이 이 경우의 우선순위를 기억하지 못할 수 있거든요. 여러분 자신도 잊어버려 실수할 수 있고요. 명시적인 괄호는 그런 실수를 막는 데 도움을 줘요.
우선순위가 같은 연산자들이 함께 쓰이면, 대입 연산자(assignment operator)를 빼고는 가장 왼쪽의 연산자가 먼저 묶여요. 대입 연산자는 반대 순서로 묶이죠. 그래서 a - b + c는 (a - b) + c로 묶이지만, a = b = c는 a = (b = c)로 묶여요.
접두 단항 연산자(prefix unary operator)의 우선순위는 연산자 뒤에 또 다른 연산자가 올 때 중요해져요. 예를 들어 -x^2는 -(x^2)를 뜻해요. '-'가 '^'보다 우선순위가 낮기 때문이에요.
다음은 Octave의 연산자들을 우선순위가 높은 순서부터 낮은 순서로 나열한 표예요. 특별한 언급이 없으면 모든 연산자는 왼쪽에서 오른쪽으로 묶여요.
- 함수 호출, 배열 인덱싱, 셀 배열 인덱싱, 구조체 요소 인덱싱 —
(){}. - 후위 증가, 후위 감소 —
++--(이 연산자들은 오른쪽에서 왼쪽으로 묶여요.) - 전치와 거듭제곱 —
'.'^.^ - 단항 더하기, 단항 빼기, 전위 증가, 전위 감소, 논리 not —
+-++--~! - 곱셈과 나눗셈 —
*/\.\.*./ - 덧셈, 뺄셈 —
+- - 콜론 —
: - 관계 연산 —
<<===>=>!=~= - 요소별 and —
& - 요소별 or —
| - 논리 and —
&& - 논리 or —
|| - 대입 —
=+=-=*=/=\=^=.*=./=.\=.^=|=&=(이 연산자들은 오른쪽에서 왼쪽으로 묶여요.)
더 알아보기
- 각 연산자의 실제 동작은 산술 연산자 항목을 참고하세요.