이세개발
article thumbnail

연산식에는 다양한 연산자가 복합적으로 구성된 경우가 많다. 산술 연산식에서 덧셈(+),뺄셈(-) 연산자보다는 곱셈(*) , 나눗셈(/) 연산자가 우선처리된다는 것을 우리는 이미 알고 있다. 그러면 다른 연산자들의 경우는 어떨까? 예를 들어 다음과 같은 연산식에서 &&연산자가 먼저 처리될까 아니면 >,< 연산자가 먼저 처리될까?

-------------------------------------

x > 0 && y < 0

--------------------------------------

프로그램에서는 연산자의 연산방향과 연산자 간의 우선순위가 정해져 있다. && 보다는 <,> 가 우선순위가 높기 때문에 x>0 과 y<0 이 우선 처리되고 , &&는 우선처리된 산출값을 가지고 연산하게 된다. 그러면 우선순위가 같은 연산자들 끼리는 어떤 순서로 처리가 될까? 이 경우에는 연산의 방향에 따라 달라진다. 대부분의 연산자는 왼쪽에서부터 오른쪽으로 ( => ) 연산을 시작한다. 예를들어 다음 연산식을 보자.

-----------------------------------------------------------------------------------------------

100 * 2 / 3 % 5

----------------------------------------------------------------------------------------------

 

 

---------------------------------

a = b = c = 5 ;

---------------------------------

위 연산식은 c = 5, b = c , a = b 순서로 실행된다. 실행되고 난 후에는 a, b, c 의 값이 모두 5가 된다. 이와 같이 어떤 연산자를 사용하느냐에 따라 연산의 방향과 우선순위가 정해져 있기 때문에 복잡한 연산식에서는 주의가 필요하다. 다음은 연산자의 연산 방향과 우선순위를 정리한 표이다.

 

이렇게 우선순위와 연산방향이 정해져 있다 하더라도 여러가지 연산자들이 섞여 있다면 어느 연산자가 먼저 처리될지 매우 혼란스러울 것이다. 그래서 괄호() 를 사용해서 먼저 처리해야 할 연산식을 묶는 것이 좋다. 예를 들어 다음 산술 연산식은 ①이 먼저 연산되고 ② 가 나중에 연산된다.

----------------------------------------------------------------------------

int var1 = 1;

int var2 = 2;

int var3 = 3;

int result = var1 + var2 * var3;

                 |         |        |

                 |          ------

                 |            ①

                 |             |

                 ------------

                       ②

-----------------------------------------------------------------------------

만약 var1 + var2 를 먼저 연산하고 싶다면 괄호 () 를 사용하면 된다. 괄호 부분의 연산은 최우선 순위를 갖기 떄문에 다른 연산자보다 우선 연산된다.

----------------------------------------------------------------------------

int result =( var1 + var2 )* var3;

                   |        |          |

                     ------          |

                      ①             |

                        |             |

                        ------------

                             ②

-----------------------------------------------------------------------------

지금까지의 연산의 방향과 우선순위를 정리하면

1) 단항, 이항 , 삼항 연산자 순으로 우선순위를 가진다.

2) 산술, 비교, 논리, 대입 연산자 순으로 우선순위를 가진다.

3) 단항과 대입 연산자를 제외한 모든 연산의 방향은 왼쪽에서 오른쪽이다.

4) 복잡한 연산식에는 괄호()를 사용하여 우선순위를 정한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

profile

이세개발

@print(name)

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!