연산의 우선순위

위키백과, 우리 모두의 백과사전.
이동: 둘러보기, 검색

수학컴퓨터 프로그래밍에서 연산의 우선순위는 모호하게 해석가능한 수식에서 어느 연산을 먼저 계산할 것인가를 결정하는 규칙이다.

표준적인 연산의 우선순위[편집]

일반적으로 쓰여진 수식에서는 다음과 같은 우선순위를 따른다. 목록의 앞쪽에 있는 연산의 우선순위가 높다.

괄호안쪽의 수식
지수 및 근호
곱하기와 나누기
더하기와 빼기

[편집]

괄호 안의 수식은 어떤 경우에서든지 우선순위가 가장 높다.

3 \div (2-1) = 3 \div 1 = 3

아래와 같은 수식의 경우 다음과 같이 계산된다.

2+3 \times 4 = 2 + 12 = 14

부호보다 지수가 먼저 계산된다.

-3^2 = -(3\times3) = -9 \ne (-3)^2 = (-3)\times(-3) = 9

근호로 둘러싸인 수식은 먼저 계산한다.

\sqrt{3+1} \times 2 = \sqrt{4} \times 2 = 2 \times 2 = 4

분수형태에 갇혀있는 수식은 먼저 계산한다.

\frac{4+2}{1+2} + 4 = \frac{6}{3} +4 = 2 + 4 = 6

우선순위가 없는 연산은 앞에서부터 차례로 계산한다.

2 \div 3 \times 5 = \frac{2}{3} \times 5 = \frac{10}{3}

지수위의 지수가 있는 경우, 위쪽에 있는 지수의 우선순위가 높다.

2^{3^2} = 2^9 = 512 \ne (2^3)^2 = 64

특수한 경우[편집]

시그마 기호의 경우는 가감보다 우선순위가 높지만 문맥에 따라 적절히 해석한다.

\sum_{k=1}^{3}k^2 + 1

이와같은 경우 괄호가 없으면 모호하다.

1^2 + 2^2 + 3^2 + 1 \ne (1^2 + 1) + (2^2 + 1) + (3^2 +1)

그러므로 다음과 같이 괄호를 써 주는 것이 좋다.

 \sum_{k=1}^{3} (k^2 + 1)

그러나 아래의 경우는 괄호가 없어도 모호하지 않으므로 쓰지 않는 경우도 있다.

\sum_{k=1}^{3}k^2 + k = (1^2 + 1) + (2^2 + 2) + (3^2 +3)

프로그래밍 언어[편집]

프로그래밍 언어는 각 언어마다 규율이 있다. 일반적인 C 언어의 경우 다음과 같은 우선순위를 따른다.

1 ()   []   ->   .   :: Grouping, scope, array/member access
2  !   ~   -   +   *   &   sizeof   type cast ++x   --x   (most) unary operations, sizeof and type casts
3 *   /   % Multiplication, division, modulo
4 +   - Addition and subtraction
5 <<   >> Bitwise shift left and right
6 <   <=   >   >= Comparisons: less-than, ...
7 ==   != Comparisons: equal and not equal
8 & Bitwise AND
9 ^ Bitwise exclusive OR
10 | Bitwise inclusive (normal) OR
11 && Logical AND
12 || Logical OR
13  ?: Conditional expression (ternary operator)
14 =   +=   -=   *=   /=   %=   &=   |=   ^=   <<=   >>= Assignment operators
15 , Comma operator