연산자 우선순위가 한 표현식 안에서 서로 다른 연산자가 있을 때 연산자를 묶는 방법을 정합니다. 예를 들어, ‘*’가
‘+’보다 우선합니다. 그러므로 표현식
a + b * c
은, b
와 c
를 곱하고 나서
a
를 더한다는 의미가 됩니다.(예: a + (b * c)
)
괄호를 사용하여 우선순위를 무시할 수 있습니다. 우성순위 규칙이 명시된 괄호가 없는 경우에 암묵적인 괄호를 사용한다고 보아도 됩니다. 사실, 연산자를 특이하게 조합하면 풀그림을 읽는 사람들이 적용되는 우선순위 규칙을 헷갈릴 수 있기 때문에 괄호를 써 주는 편이 좋습니다. 풀그림 작성자도 까먹거나 실수할 수 있습니다. 명시적인 괄호가 그러한 문제를 해결하는 데에 도움을 줍니다.
우선순위가 같은 연산자를 함께 사용할 때, 오른쪽부터 묶는 할당 연산자를 제외하면, 가장 왼쪽에 있는 연산자부터 묶입니다. 그러므로 표현식 a - b + c
이
(a - b) + c
으로 묶이나, 표현식 a = b = c
은
a = (b = c)
으로 묶입니다.
접두사형 단항 연산자의 우선순위는 해당 계수가 다른 연산자의 계수로 쓰일 때 중요합니다. 예를 들면, ‘^’가 ‘-’보다
우선하기에 -x^2
은
-(x^2)
를 뜻합니다.
우선순위가 높은 순으로 정렬한 옥타브에 있는 연산자에 관한 표입니다. 특기 사항이 없는 한, 모든 연산자는 왼쪽에서 오른쪽으로 묶입니다.
함수 호출, 배열 색인, 낱칸 배열 색인, 구조체 원소 색인
‘()’ ‘{}’ ‘.’
접미사형 증감
‘++’ ‘--’
이 연산자는 오른쪽에서 왼쪽으로 묶습니다.
전치, 제곱
‘'’ ‘.'’ ‘^’ ‘**’ ‘.^’ ‘.**’
단항 덧셈, 단항 뺄셈, 접두사형 증감, 논리 부정
‘+’ ‘-’ ‘++’ ‘--’ ‘~’ ‘!’
곱셈, 나눗셈
‘*’ ‘/’ ‘\’ ‘.\’ ‘.*’ ‘./’
덧셈, 뺄셈
‘+’ ‘-’
쌍점
‘:’
관계
‘<’ ‘<=’ ‘==’ ‘>=’ ‘>’ ‘!=’ ‘~=’
원소 단위 논리곱
‘&’
원소 단위 논리합
‘|’
논리곱
‘&&’
논리합
‘||’
할당
‘=’ ‘+=’ ‘-=’ ‘*=’ ‘/=’ ‘\=’ ‘^=’ ‘.*=’ ‘./=’ ‘.\=’ ‘.^=’ ‘|=’ ‘&=’
이 연산자는 오른쪽에서 왼쪽으로 묶습니다.