연산자 우선순위
요약
연산자 우선순위를 알아봅니다. 정보처리기사 실기에 자주 출제되는 복합 연산식의 계산 순서를 정리합니다.
연산자 우선순위 핵심 정리
| 우선순위 | 연산자 | 설명 | 결합 방향 |
|---|---|---|---|
| 1 | () [] -> . | 괄호, 배열, 멤버 접근 | 왼쪽 → 오른쪽 |
| 2 | ! ~ ++ -- | 단항 연산자, NOT, 증감 | 오른쪽 → 왼쪽 |
| 3 | * / % | 곱셈, 나눗셈, 나머지 | 왼쪽 → 오른쪽 |
| 4 | + - | 덧셈, 뺄셈 | 왼쪽 → 오른쪽 |
| 5 | << >> | 비트 시프트 | 왼쪽 → 오른쪽 |
| 6 | < <= > >= | 관계 연산자 (크기 비교) | 왼쪽 → 오른쪽 |
| 7 | == != | 관계 연산자 (같음 비교) | 왼쪽 → 오른쪽 |
| 8 | & | 비트 AND | 왼쪽 → 오른쪽 |
| 9 | ^ | 비트 XOR | 왼쪽 → 오른쪽 |
| 10 | | | 비트 OR | 왼쪽 → 오른쪽 |
| 11 | && | 논리 AND | 왼쪽 → 오른쪽 |
| 12 | || | 논리 OR | 왼쪽 → 오른쪽 |
| 13 | ?: | 삼항 연산자 | 오른쪽 → 왼쪽 |
| 14 | = += -= 등 | 대입 연산자 | 오른쪽 → 왼쪽 |
| 우선순위 | 연산자 | 설명 | 결합 방향 |
|---|---|---|---|
| 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에 대입됩니다.
단항 연산자 (!, ~, ++, --)
!a가 먼저 계산되어 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 & 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(&)
&가 ^보다 우선순위가 높습니다.
대입 연산자는 가장 낮음
대입 연산자(=)는 거의 모든 연산자보다 우선순위가 낮습니다.