티스토리 뷰

Table of Contents


개요

C언어 연산자들의 우선순위와 결합성




1. 개요


 우리는 1 + 2 - 3 을 계산할 경우, 덧셈을 먼저 하고 그 다음 뻴셈을 합니다. 덧셈 뺄셈 연산을 할 때는, -> 방향으로 연산하기 때문이지요. 이러한 방향을 결합성이라고 합니다. 우선순위가 같은 연산끼리는 결합성에 따른 방향순으로 연산합니다.


 그리고 1 + 2 * 3 를 계산할 경우, 우리는 곱셈을 먼저 계산하고 덧셈을 계산합니다. 이는 우리가 수학에서 곱하기의 연산이 덧셈의 연산보다 우선순위가 높다고 이미 배웠기 때문입니다.


 사칙 연산은 괄호와 곱셈, 나눗셈만 주의하면 될 정도로 우선순위와 결합성이 간단하지만, C언어에는 사칙연산 이외에도 많은 연산자들이 존재하기 때문에 이 연산자들이 같이 사용될 경우 혼란이 있을 수 있습니다.




2. C언어 연산자들의 우선순위와 결합성


 C언어에서도 한 번에 여러 개의 연산자를 사용할 경우, 우선순위에 따라 순서대로 처리하며 우선순위가 같은 연산자들끼리는 결합성의 방향대로 순서를 정합니다. 아래 표를 통해 연산자들의 우선순위와 결합성을 알 수 있습니다.


우선순위 (높을수록 우선)

연산

결합성

16

[ ],  ( ),  x++,  x--

->

15

&x,  *x,  ++x,  --x,  !x,  ~x,  sizeof(x),  +x,  -x

<-

14

(변환할 변수형)

<-

13

x*y,  x/y,  x%y

->

12

x+y,  x-y

->

11

x<<y,  x>>y

->

10

x<y,  x>y,  x<=y,  x>=y

->

9

x==y,  x!=y

->

8

x&y

->

7

x^y

->

6

x|y

->

5

x&&y

->

4

x||y

->

3

x?y:z

<-

2

x=y,  x*=y,  x/=y,  x%=y,  x+=y,  x-=y,

x<<=y,  x>>=y,  x&=y,  x^=y,  x|=y

<-

1

,

->


 우선순위가 뭐가 높은 지를 알아두면 좋지만, 필요할 때 찾아보면 되기 때문에 외우실 필요까진 없습니다. 사실, 잘 모를 경우엔 찾아보지 않고 괄호 ()를 통해 먼저 연산시키는 것이 보통입니다. 극단적인 예를 들어 곱하기가 더하기보다 우선순위가 높다는 게 기억이 안나더라도 1+(2*3) 이런식으로 괄호를 하면 알아서 괄호 안의 내용이 먼저 연산되는 점을 이용합니다. 따라서 자주 쓰는 연산자들에 대해서만 우선순위를 알고 있는 경우가 대부분입니다.


'C, C++' 카테고리의 다른 글

[ C언어 ] 15. 형 변환  (2) 2017.12.07
[ C언어 ] 14. 문자열  (0) 2017.12.04
[ C언어 ] 13. 연산자 우선순위  (0) 2017.11.27
[ C언어 ] 12. 배열  (0) 2017.11.25
[ C언어 ] 11. 이진수와 비트연산자  (0) 2017.11.23
[ C언어 ] 10. 다중 반복문  (0) 2017.11.22