연산자 우선순위
선수학습(1개)
요약
연산자 우선순위와 결합 방향을 알아봅니다. 정보처리기사 실기에 자주 출제되는 복합 연산식의 계산 순서를 단계별로 정리합니다.
연산자 우선순위 핵심 정리
| 우선순위 | 연산자 | 설명 | 결합 방향 |
|---|---|---|---|
| 1 | () [] -> . | 괄호, 배열, 멤버 접근 | 왼쪽 → 오른쪽 |
| 2 | ++ -- | 후위 증감 | 왼쪽 → 오른쪽 |
| 3 | ! ~ ++ -- * & | 단항 연산자, NOT, 전위 증감, 역참조, 주소 | 오른쪽 → 왼쪽 |
| 4 | * / % | 곱셈, 나눗셈, 나머지 | 왼쪽 → 오른쪽 |
| 5 | + - | 덧셈, 뺄셈 | 왼쪽 → 오른쪽 |
| 6 | << >> | 비트 시프트 | 왼쪽 → 오른쪽 |
| 7 | < <= > >= | 관계 연산자 (크기 비교) | 왼쪽 → 오른쪽 |
| 8 | == != | 관계 연산자 (같음 비교) | 왼쪽 → 오른쪽 |
| 9 | & | 비트 AND | 왼쪽 → 오른쪽 |
| 10 | ^ | 비트 XOR | 왼쪽 → 오른쪽 |
| 11 | | | 비트 OR | 왼쪽 → 오른쪽 |
| 12 | && | 논리 AND | 왼쪽 → 오른쪽 |
| 13 | || | 논리 OR | 왼쪽 → 오른쪽 |
| 14 | ?: | 삼항 연산자 | 오른쪽 → 왼쪽 |
| 15 | = += -= 등 | 대입 연산자 | 오른쪽 → 왼쪽 |
| 우선순위 | 연산자 | 설명 | 결합 방향 |
|---|---|---|---|
| 1 | () [] . | 괄호, 배열, 멤버 접근 | 왼쪽 -> 오른쪽 |
| 2 | ! ~ ++ -- | 단항 연산자, NOT, 증감 | 오른쪽 -> 왼쪽 |
| 3 | * / % | 곱셈, 나눗셈, 나머지 | 왼쪽 -> 오른쪽 |
| 4 | + - | 덧셈, 뺄셈 | 왼쪽 -> 오른쪽 |
| 5 | << >> | 비트 시프트 | 왼쪽 -> 오른쪽 |
| 6 | < <= > >= | 관계 연산자 (크기 비교) | 왼쪽 -> 오른쪽 |
| 7 | == != | 관계 연산자 (같음 비교) | 왼쪽 -> 오른쪽 |
| 8 | & | 비트 AND | 왼쪽 -> 오른쪽 |
| 9 | ^ | 비트 XOR | 왼쪽 -> 오른쪽 |
| 10 | | | 비트 OR | 왼쪽 -> 오른쪽 |
| 11 | && | 논리 AND | 왼쪽 -> 오른쪽 |
| 12 | || | 논리 OR | 왼쪽 -> 오른쪽 |
| 13 | ?: | 삼항 연산자 | 오른쪽 -> 왼쪽 |
| 14 | = += -= 등 | 대입 연산자 | 오른쪽 -> 왼쪽 |
숫자가 작을수록 우선순위가 높습니다. (1이 가장 먼저 계산)
연산자 종류가 아직 익숙하지 않다면 해당 페이지를 먼저 읽어보세요. 비트 연산자는 별도 페이지에서 자세히 다룹니다.
결합 방향이란? 쌩기초
결합 방향(Associativity)은 같은 우선순위의 연산자가 연속으로 나올 때 어느 방향부터 계산할지를 정하는 규칙입니다.
연산자 개념이 처음이라면 해당 페이지를 먼저 읽어보세요.
왼쪽 → 오른쪽 (대부분의 연산자)
왼쪽부터 차례대로 계산합니다.
오른쪽 → 왼쪽 (대입, 단항, 삼항 연산자)
대입 연산자 (=)
오른쪽부터 계산합니다. c에 먼저 5가 대입되고, 그 값이 b에, 다시 a에 대입됩니다.
단항 연산자 (!, ~, ++, --, *, &)
C언어에서 0은 거짓, 0이 아닌 값은 참입니다. !a는 !0이므로 거짓의 반대인 1(참)이 되고, !1은 참의 반대인 0(거짓)이 됩니다.
비트 NOT 연산을 두 번 하면 원래 값으로 돌아옵니다.
++c가 먼저 계산되어 6이 되고, -6이 됩니다.
삼항 연산자 (?:)
오른쪽 삼항 연산자 b ? 2 : 3이 먼저 계산되어 2가 되고, a ? 1 : 2가 계산됩니다. a가 0(거짓)이므로 결과는 2입니다.
실기 문제 빈출 연산자 조합 기초
나머지와 비교 연산자
% 연산자가 < 연산자보다 우선순위가 높습니다.
계산 순서:
4 % 3= 1 (나머지 연산 먼저)1 < 3= 1 (비교 연산)
비트 시프트와 비트 AND 연산자
>> 연산자가 & 연산자보다 우선순위가 높습니다.
계산 순서:
2 >> 1= 1 —>>는 비트를 오른쪽으로 미는 연산입니다.2를 2진수로 쓰면10이고, 오른쪽으로 1칸 밀면01, 즉1이 됩니다.2 & 1= 0 (비트 AND 연산)

논리 연산자(&&)와 삼항 연산자(?:) 기초
&& 연산자가 ?: 연산자보다 우선순위가 높습니다.
계산 순서:
7 > 5= 1 (참)0 <= 3= 1 (참)1 && 1= 1 (논리 AND)- 조건이 참이므로
0 * 7= 0
복합 연산 문제 풀이 예시 심화
다음 코드의 출력 결과를 구해봅시다.
1단계: z = y % 3 < 3 ? 2 : 1
2단계: z = z & z >> 1
3단계: z = x > 5 && z <= 3 ? z * x : z / x
최종 출력: 0
핵심: 비교 연산자가 비트 연산자보다 먼저 계산된다 기초
이 문제를 풀 때 가장 중요한 규칙은 다음과 같습니다.
즉, ==와 !=가 먼저 계산되고, 그 결과에 비트 연산자가 적용됩니다.
왜 이것이 중요한가?
1==b^c!=d를 보면 ^(XOR)가 먼저 계산될 것 같지만, 실제로는 ==와 !=가 먼저 계산됩니다.

비트 연산자 사이의 우선순위 기초
비트 연산자끼리도 우선순위가 다릅니다.
| 순서 | 연산자 | 이름 |
|---|---|---|
| 먼저 | & | AND |
| 중간 | ^ | XOR |
| 나중에 | | | OR |
기출 문제 풀이: 연산자 우선순위 적용 심화
다음 코드로 연산자 우선순위를 실전에 적용해봅시다.
1단계: 비교 연산자 먼저 계산
각 비교 연산자의 결과를 먼저 구합니다.
| 연산 | 계산 | 결과 |
|---|---|---|
a == 2 | 3 == 2 | false |
a == c | 3 == 3 | true |
c > d | 3 > 5 | false |
1 == b | 1 == 4 | false |
c != d | 3 != 5 | true |
2단계: NOT 연산자 계산
! 연산자는 단항 연산자로 우선순위가 매우 높습니다.
3단계: 비트 연산자 계산
이제 비교 결과를 대입하여 비트 연산을 계산합니다.
괄호 안부터 계산:
괄호 밖의 & 연산:
최종 결과: true (if문 내부 실행)
같은 패턴의 조건식 분석 심화
위 문제의 내부 if문도 같은 패턴입니다.
계산 과정
비교 연산자가 먼저 계산됩니다.
| 연산 | 계산 | 결과 |
|---|---|---|
7 == b | 7 == 4 | false |
c != a | 3 != 7 | true |
조건이 true이므로 System.out.println(a) 가 실행되어 7이 출력됩니다.
헷갈리기 쉬운 우선순위 기초
비트 연산자 vs 비교 연산자
비교 연산자(<, >, == 등)가 비트 연산자(&, |, ^)보다 우선순위가 높습니다.
비교 연산자(==, !=, <, > 등)가 비트 연산자(&, |, ^)보다 우선순위가 높습니다.
비트 XOR(^) vs 비트 AND(&)
&가 ^보다 우선순위가 높습니다.
대입 연산자는 가장 낮음
대입 연산자(=)는 "같다"가 아니라 오른쪽 값을 왼쪽 변수에 넣는 연산자입니다. 거의 모든 연산자보다 우선순위가 낮아서, 오른쪽의 모든 계산이 끝난 뒤에 마지막으로 실행됩니다.