24.0 연산자 우선순위 알아보기

수학에서 35 + 1 * 2의 결과는 무엇일까요? 이 식에서는 덧셈 다음에 곱셈으로 나와있지만 곱셈이 덧셈보다 우선순위가 높으므로 72가 아니라 37이 됩니다. 즉 1 * 2를 먼저 계산해서 2가 나오고, 앞의 35와 더해서 37이 됩니다. 만약 35 + 1를 먼저 계산하려면 (35 + 1) * 2처럼 괄호로 묶어주어야 합니다.

마찬가지로 C 언어도 곱셈이 덧셈보다 우선순위가 높고, 다양한 연산자들끼리 우선순위가 정해져 있습니다.

표 25‑1 C 언어 연산자 우선순위
우선순위 연산자 설명 결합 법칙(방향)
1




x++
x--
( )
[ ]
.
->
(자료형){값}
증가 연산자(뒤, 후위)
감소 연산자(뒤, 후위)
함수 호출
배열 첨자
구조체/공용체 멤버 접근
포인터로 구조체/공용체 멤버 접근
복합 리터럴





2









++x
--x
+x
-x
!
~
(자료형)
*x
&x
sizeof
증가 연산자(앞, 전위)
감소 연산자(앞, 전위)
단항 덧셈(양의 부호)
단항 뺄셈(음의 부호)
논리 NOT
비트 NOT
자료형 캐스팅(자료형 변환)
포인터 x 역참조
x의 주소
자료형의 크기












3


*
/
%
곱셈
나눗셈
나머지



4

+
-
덧셈
뺄셈


5

<<
>>
비트를 왼쪽으로 시프트
비트를 오른쪽으로 시프트


6



<
<=
>
>=
작음
작거나 같음

크거나 같음




7

==
!=
같음
다름


8 & 비트 AND
9 ^ 비트 XOR
10 | 비트 OR
11 && 논리 AND
12 || 논리 OR
13 ? : 삼항 연산자
14











=
+=
-=
*=
/=
%=
<<=
>>=
&=
^=
|=

할당
덧셈 후 할당
뺄셈 후 할당
곱셈 후 할당
나눗셈 후 할당
나머지 연산 후 할당
비트를 왼쪽으로 시프트한 후 할당
비트를 오른쪽으로 시프트한 후 할당
비트 AND 연산 후 할당
비트 XOR 연산 후 할당
비트 OR 연산 후 할당













15 , 쉼표(콤마) 연산자

연산자 우선순위를 모두 외울 필요는 없으며 필요할 때 찾아보면 됩니다. 실무에서는 연산자의 계산 순서를 ( ) (괄호)로 명확하게 나타내는 것을 선호합니다.

보통 남이 만든 코드 중에서 연산자에 괄호를 잘 사용하지 않아 이해하기가 힘들 때나 찾아보면 됩니다.