연산자 우선순위

코딩C언어Java
읽는데 9분 소요
처음 쓰여진 날: 2026-02-03
마지막 수정일: 2026-02-18
조회수: 0

요약

연산자 우선순위를 알아봅니다. 정보처리기사 실기에 자주 출제되는 복합 연산식의 계산 순서를 정리합니다.

연산자 우선순위 핵심 정리

우선순위연산자설명결합 방향
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
코드 하이라이팅 중...

왼쪽부터 차례대로 계산합니다.

오른쪽 → 왼쪽 (대입, 단항, 삼항 연산자)

대입 연산자 (=)

c
코드 하이라이팅 중...

오른쪽부터 계산합니다. c에 먼저 5가 대입되고, 그 값이 b에, 다시 a에 대입됩니다.

단항 연산자 (!, ~, ++, --)

c
코드 하이라이팅 중...

!a가 먼저 계산되어 1이 되고, !1이 계산되어 0이 됩니다.

c
코드 하이라이팅 중...

비트 NOT 연산을 두 번 하면 원래 값으로 돌아옵니다.

c
코드 하이라이팅 중...

++c가 먼저 계산되어 6이 되고, -6이 됩니다.

삼항 연산자 (?:)

c
코드 하이라이팅 중...

오른쪽 삼항 연산자 b ? 2 : 3이 먼저 계산되어 2가 되고, a ? 1 : 2가 계산됩니다. a가 0(거짓)이므로 결과는 2입니다.


실기 문제 빈출 연산자 조합

나머지와 비교 연산자

% 연산자가 < 연산자보다 우선순위가 높습니다.

c
코드 하이라이팅 중...

계산 순서:

  1. 4 % 3 = 1 (나머지 연산 먼저)
  2. 1 < 3 = 1 (비교 연산)

비트 시프트와 비트 AND 연산자

>> 연산자가 & 연산자보다 우선순위가 높습니다.

c
코드 하이라이팅 중...

계산 순서:

  1. 2 >> 1 = 1 (비트 시프트 먼저)
  2. 2 & 1 = 0 (비트 AND 연산)
text
코드 하이라이팅 중...
연산자 우선순위
연산자 우선순위: 산술 > 시프트 > 비교 > 비트 > 논리 > 삼항 > 대입


논리 연산자(&&)와 삼항 연산자(?:)

&& 연산자가 ?: 연산자보다 우선순위가 높습니다.

c
코드 하이라이팅 중...

계산 순서:

  1. 7 > 5 = 1 (참)
  2. 0 <= 3 = 1 (참)
  3. 1 && 1 = 1 (논리 AND)
  4. 조건이 참이므로 0 * 7 = 0

복합 연산 문제 풀이 예시

다음 코드의 출력 결과를 구해봅시다.

c
코드 하이라이팅 중...

1단계: z = y % 3 < 3 ? 2 : 1

text
코드 하이라이팅 중...

2단계: z = z & z >> 1

text
코드 하이라이팅 중...

3단계: z = x > 5 && z <= 3 ? z * x : z / x

text
코드 하이라이팅 중...

최종 출력: 0

핵심: 비교 연산자가 비트 연산자보다 먼저 계산된다

이 문제를 풀 때 가장 중요한 규칙은 다음과 같습니다.

text
코드 하이라이팅 중...

즉, ==!=먼저 계산되고, 그 결과에 비트 연산자가 적용됩니다.

왜 이것이 중요한가?

java
코드 하이라이팅 중...

1==b^c!=d를 보면 ^(XOR)가 먼저 계산될 것 같지만, 실제로는 ==!=가 먼저 계산됩니다.

Java 연산자 우선순위
비교 연산자(==, !=)가 먼저 계산되고, 비트 연산자(&, ^, |)는 나중에 계산됩니다.


비트 연산자 사이의 우선순위

비트 연산자끼리도 우선순위가 다릅니다.

text
코드 하이라이팅 중...
순서연산자이름
먼저&AND
중간^XOR
나중에|OR
java
코드 하이라이팅 중...

기출 문제 풀이: 연산자 우선순위 적용

다음 코드로 연산자 우선순위를 실전에 적용해봅시다.

java
코드 하이라이팅 중...

1단계: 비교 연산자 먼저 계산

각 비교 연산자의 결과를 먼저 구합니다.

연산계산결과
a == 23 == 2false
a == c3 == 3true
c > d3 > 5false
1 == b1 == 4false
c != d3 != 5true

2단계: NOT 연산자 계산

! 연산자는 단항 연산자로 우선순위가 매우 높습니다.

text
코드 하이라이팅 중...

3단계: 비트 연산자 계산

이제 비교 결과를 대입하여 비트 연산을 계산합니다.

text
코드 하이라이팅 중...

괄호 안부터 계산:

text
코드 하이라이팅 중...

괄호 밖의 & 연산:

text
코드 하이라이팅 중...

최종 결과: true (if문 내부 실행)


같은 패턴의 조건식 분석

위 문제의 내부 if문도 같은 패턴입니다.

java
코드 하이라이팅 중...

계산 과정

text
코드 하이라이팅 중...

비교 연산자가 먼저 계산됩니다.

연산계산결과
7 == b7 == 4false
c != a3 != 7true
text
코드 하이라이팅 중...

조건이 true이므로 System.out.println(a) 가 실행되어 7이 출력됩니다.


헷갈리기 쉬운 우선순위

비트 연산자 vs 비교 연산자

비교 연산자(<, >, == 등)가 비트 연산자(&, |, ^)보다 우선순위가 높습니다.

c
코드 하이라이팅 중...

비트 연산을 먼저 하고 싶다면 괄호를 사용하세요!

비교 연산자(==, !=, <, > 등)가 비트 연산자(&, |, ^)보다 우선순위가 높습니다.

java
코드 하이라이팅 중...

비트 XOR(^) vs 비트 AND(&)

&^보다 우선순위가 높습니다.

java
코드 하이라이팅 중...

대입 연산자는 가장 낮음

대입 연산자(=)는 거의 모든 연산자보다 우선순위가 낮습니다.

c
코드 하이라이팅 중...
java
코드 하이라이팅 중...

정보처리기사 실기 기출 문제