소프트웨어/C 언어

[C언어]17. 변수의 계산방법, 연산자에 대하여 알아보자. -5- ( 연산자 우선순위 )

리습 2013. 6. 6. 07:00


 안녕하십니까. 리습입니다.



 지금까지 다양한 연산자를 알아보았습니다. 또한 연산자는 공구와도 같다 라고 말씀드렸습니다. 그런데 여러가지 연산자를 한거번에 쓸경우 사용한 사람과 컴파일러가 다르게 이해할 수도 있습니다. 예를 들어 우리가 2 * 3 + 1 이라고 입력하였을 때 컴파일러는 2 와 3을 곱한후 다음에 1을 더할 것입니다. 하지만 우리의 의도가 3과 1을 더한후 2를 곱하는 것이였다면 우리가 원하는 결과 값을 얻지 못하게 되는 것이지요. 이렇게 컴파일러가 우선적으로 처리하는 연산자의 순서가 있습니다.그것을 연산자 우선순위라고 합니다.

  연산자 우선순위


 우리가 곱하기를 더하기보다 먼저 계산하고 생각하는 것 처럼 프로그램에서도 연산자에대한 우선순위가 존재합니다. 이 연산자의 순서는 우리가 알고있는 수학적 상식 수준의 연산 순위와 비슷하므로 특정 몇개만 잘 기억하시면 됩니다.

순위  

 연산자

 결합 순서

 1

 ( )  [ ]  -> .

 왼쪽 부터 ->

 2

 ! ~ ++ -- 

+ -(부호 연산자 ) *(포인터 연산자) & sizeof  

(캐스트연산자)

오른쪽부터  <-

 3

 *(산술연산자 곱셈) / %

 왼쪽 부터 ->

 4

 + -(산술연산자 덧셈뺄셈)

 왼쪽 부터 ->

 5

 << >>

 왼쪽 부터 ->

 6

 < <= > >=

 왼쪽 부터 ->

 7

 == !=

 왼쪽 부터 ->

 8

 &

 왼쪽 부터 ->

 9

 ^

 왼쪽 부터 ->

 10

 |

왼쪽 부터 ->

 11

 &&

왼쪽 부터 ->

 12

 ||

왼쪽 부터 ->

 13

 ? :

오른쪽부터  <-

 14

 복합대입

 오른쪽부터  <-

 15

 ,

왼쪽 부터 ->


 산술연산자의 경우 우리가 곱셈을 먼저하듯이 곱셈이 우선순위가 높고 ( ) 괄호는 연산자 순위가 1위로 가장 우선적으로 생각된다는 것을 볼 수 있습니다. 하지만 실제 코드를 작성할 때 더욱더 가독성이 좋은 코드, 이해하기 좋은 코드를 작성하기 위해서는 연산자 우선순위를 생각해서 쓰는 것이 아닌 ( )괄호를 전부 쳐 주는 것입니다.

다음과 같이 괄호만을 해줬을 뿐인데 코드를 읽는게 훨신 편해졌습니다. 습관적으로 계산 순서에 따라서 괄호를 쳐주는 것이 보기좋은 코드를 작성하는 기술입니다.  


지금 까지 연산자에 대하여 알아보았습니다. 연산자는 어떻게 사용하냐에 따라서 천차만별의 결과를 얻어낼수 있습니다. 정확하게 이해하시고 응용하시기 바랍니다.