연산자 우선순위

연산자 우선순위 (Operator Precedence)

하나의 표현식 안에 서로 다른 연산자들이 가까이 있을 때, 연산자들이 어떻게 묶이는지를 정하는 게 연산자 우선순위예요. 예를 들어 *+보다 우선순위가 높아요. 그래서 a + b * c라는 표현식은 bc를 곱한 다음 그 곱에 a를 더한다는 뜻이에요(즉 a + (b * c)).

출처: 문서

본문

괄호를 쓰면 연산자들의 우선순위를 무시할 수 있어요. 우선순위 규칙은 "괄호를 직접 쓰지 않았을 때 괄호가 어디에 있다고 가정하는지"를 말해 준다고 생각하면 돼요. 사실 연산자를 특이하게 조합할 때는 괄호를 쓰는 게 현명해요. 프로그램을 읽는 다른 사람들이 이 경우의 우선순위를 기억하지 못할 수 있거든요. 여러분 자신도 잊어버려 실수할 수 있고요. 명시적인 괄호는 그런 실수를 막는 데 도움을 줘요.

우선순위가 같은 연산자들이 함께 쓰이면, 대입 연산자(assignment operator)를 빼고는 가장 왼쪽의 연산자가 먼저 묶여요. 대입 연산자는 반대 순서로 묶이죠. 그래서 a - b + c(a - b) + c로 묶이지만, a = b = ca = (b = c)로 묶여요.

접두 단항 연산자(prefix unary operator)의 우선순위는 연산자 뒤에 또 다른 연산자가 올 때 중요해져요. 예를 들어 -x^2-(x^2)를 뜻해요. '-'가 '^'보다 우선순위가 낮기 때문이에요.

다음은 Octave의 연산자들을 우선순위가 높은 순서부터 낮은 순서로 나열한 표예요. 특별한 언급이 없으면 모든 연산자는 왼쪽에서 오른쪽으로 묶여요.

  • 함수 호출, 배열 인덱싱, 셀 배열 인덱싱, 구조체 요소 인덱싱() {} .
  • 후위 증가, 후위 감소++ -- (이 연산자들은 오른쪽에서 왼쪽으로 묶여요.)
  • 전치와 거듭제곱' .' ^ .^
  • 단항 더하기, 단항 빼기, 전위 증가, 전위 감소, 논리 not+ - ++ -- ~ !
  • 곱셈과 나눗셈* / \ .\ .* ./
  • 덧셈, 뺄셈+ -
  • 콜론:
  • 관계 연산< <= == >= > != ~=
  • 요소별 and&
  • 요소별 or|
  • 논리 and&&
  • 논리 or||
  • 대입= += -= *= /= \= ^= .*= ./= .\= .^= |= &= (이 연산자들은 오른쪽에서 왼쪽으로 묶여요.)

더 알아보기

  • 각 연산자의 실제 동작은 산술 연산자 항목을 참고하세요.