Logical Operator

논리 연산자

Jun 08, 2026

정처기 실기 — C / Java / Python 논리연산자 정리

출처 기준: 각 언어의 공식 표준 문서 및 명세를 기반으로 작성

  • C: ISO/IEC 9899:2018 (C18 표준)
  • Java: Java Language Specification (JLS 21)
  • Python: Python Language Reference 3.x (docs.python.org)

1. 언어별 논리연산자 비교표

연산자 의미CJavaPython
논리 AND&&&&and
논리 OR||||or
논리 NOT!!not
비트 AND&&&
비트 OR|||
비트 XOR^^^
비트 NOT~~~

⚠️ 주의: &, |는 논리연산자가 아닌 비트연산자이나, 시험에서 혼용되어 출제되므로 구분 필수


2. C 언어 논리연산자

연산자 종류

연산자이름사용 예결과
&&논리 ANDa && b둘 다 참이면 1, 아니면 0
||논리 ORa || b하나라도 참이면 1, 아니면 0
!논리 NOT!a참이면 0, 거짓이면 1

핵심 특징

  • 반환값: C의 논리연산자는 int형 0 또는 1을 반환
  • 참/거짓 판단: 0이면 거짓, 0이 아닌 모든 값이면 참
  • 단락 평가(Short-circuit evaluation): &&에서 앞이 거짓이면 뒤를 평가하지 않음, ||에서 앞이 참이면 뒤를 평가하지 않음

코드 예시

#include <stdio.h> int main() { int a = 1, b = 0; printf("%d\n", a && b); // 0 (AND: 하나라도 거짓) printf("%d\n", a || b); // 1 (OR: 하나라도 참) printf("%d\n", !a); // 0 (NOT: 참 → 거짓) printf("%d\n", !b); // 1 (NOT: 거짓 → 참) return 0; }

출력:

0 1 0 1

단락 평가 예시 (시험 출제 포인트)

int a = 0, b = 5; // a가 0(거짓)이므로 b++는 실행되지 않음 if (a && b++) { printf("실행"); } printf("%d\n", b); // b는 여전히 5

3. Java 논리연산자

연산자 종류

연산자이름사용 예특징
&&논리 AND (단락)a && b단락 평가 적용
||논리 OR (단락)a || b단락 평가 적용
!논리 NOT!a-
&논리 AND (비단락)a & b양쪽 모두 평가
|논리 OR (비단락)a | b양쪽 모두 평가
^논리 XORa ^ b다르면 true

핵심 특징

  • 반환값: boolean 타입 (true / false)
  • &&&의 차이:
    • && → 앞이 false면 뒤 평가 안 함 (단락 평가)
    • & → 앞의 결과와 관계없이 뒤도 항상 평가
  • |||의 차이:
    • || → 앞이 true면 뒤 평가 안 함
    • | → 항상 양쪽 모두 평가

코드 예시

public class Main { public static void main(String[] args) { boolean a = true, b = false; System.out.println(a && b); // false System.out.println(a || b); // true System.out.println(!a); // false System.out.println(a ^ b); // true (XOR: 서로 다름) System.out.println(a ^ a); // false (XOR: 서로 같음) } }

출력:

false true false true false

&& vs & 차이 예시 (시험 출제 포인트)

int x = 0; // && 단락평가: x==0이 false이므로 ++x 실행 안 됨 if (x != 0 && (++x > 0)) { } System.out.println(x); // 0 // & 비단락: x!=0이 false여도 ++x 무조건 실행됨 if (x != 0 & (++x > 0)) { } System.out.println(x); // 1

4. Python 논리연산자

연산자 종류

연산자이름사용 예결과
and논리 ANDa and b첫 번째 거짓값 또는 마지막 값 반환
or논리 ORa or b첫 번째 참값 또는 마지막 값 반환
not논리 NOTnot aTrue 또는 False 반환

핵심 특징 (C/Java와 가장 다른 부분)

  • 반환값: True/False가 아닌 피연산자 값 자체를 반환 (C, Java와 결정적 차이)
  • 단락 평가 적용:
    • and: 앞이 거짓이면 앞의 값을 그대로 반환, 앞이 참이면 뒤의 값 반환
    • or: 앞이 참이면 앞의 값을 그대로 반환, 앞이 거짓이면 뒤의 값 반환
  • Falsy 값: False, 0, 0.0, "", [], {}, None → 거짓으로 판단

코드 예시

a = True b = False print(a and b) # False print(a or b) # True print(not a) # False print(not b) # True

출력:

False True False True

Python 고유 반환값 특성 (시험 출제 포인트)

# and: 앞이 참이면 뒤 값 반환, 앞이 거짓이면 앞 값 반환 print(1 and 2) # 2 ← 앞(1)이 참이므로 뒤(2) 반환 print(0 and 2) # 0 ← 앞(0)이 거짓이므로 앞(0) 반환 # or: 앞이 참이면 앞 값 반환, 앞이 거짓이면 뒤 값 반환 print(1 or 2) # 1 ← 앞(1)이 참이므로 앞(1) 반환 print(0 or 2) # 2 ← 앞(0)이 거짓이므로 뒤(2) 반환 # not: 항상 True/False 반환 print(not 0) # True print(not 1) # False print(not "") # True print(not "hello") # False

5. 언어별 핵심 차이 비교 요약

비교 항목CJavaPython
AND 연산자&&&&and
OR 연산자||||or
NOT 연산자!!not
참 반환값1 (int)true (boolean)피연산자 값 자체
거짓 반환값0 (int)false (boolean)피연산자 값 자체
단락 평가적용 (&&, ||)적용 (&&, ||)적용 (and, or)
비단락 연산자&, | (비트)&, | (논리/비트)&, | (비트만)
XOR^ (비트만)^ (논리/비트 모두)^ (비트만)

6. 시험 빈출 포인트 정리

① 단락 평가(Short-circuit evaluation) — 세 언어 공통

&&(and): 앞이 거짓 → 뒤 실행 안 함 ||(or): 앞이 참 → 뒤 실행 안 함

부수 효과(증감 연산 등)가 있는 코드에서 결과값이 달라짐


② Python의 and/or 반환값

print(3 and 0) # 0 ← bool이 아닌 값 자체 반환 print(3 or 0) # 3 print(None or 5) # 5

③ Java의 && vs &

int x = 0; boolean r1 = (x != 0) && (++x > 0); // x = 0 (단락평가로 ++x 미실행) boolean r2 = (x != 0) & (++x > 0); // x = 1 (비단락, ++x 실행됨)

④ C의 논리연산자 결과는 int형 0 또는 1

int x = 5; printf("%d\n", x && 3); // 1 (참이면 항상 1) printf("%d\n", x || 0); // 1 printf("%d\n", !x); // 0 (x가 참이므로 NOT → 0)

7. 진리표

AND

ABA AND B
거짓거짓
거짓거짓
거짓거짓거짓

OR

ABA OR B
거짓
거짓
거짓거짓거짓

XOR (Java, 비트연산)

ABA XOR B
거짓
거짓
거짓
거짓거짓거짓

NOT

ANOT A
거짓
거짓

참고: 이 문서는 C18, JLS 21, Python 3.x 공식 명세 기준으로 작성되었습니다.
정처기 실기 시험에서는 코드 추적 문제에서 단락 평가와 반환값 타입 차이가 주로 출제됩니다.

Go toor?