연산자 우선순위

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

요약

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

연산자 우선순위 핵심 정리

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

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

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

대입 연산자 (=)

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

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

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

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

C언어에서 0은 거짓, 0이 아닌 값은 참입니다. !a!0이므로 거짓의 반대인 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진수로 쓰면 10이고, 오른쪽으로 1칸 밀면 01, 즉 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
코드 하이라이팅 중...

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