[C/C++] 6. 논리 연산자

찰규

·

2026년 8월 1일 (30일 전)

앞서 증감 연산자를 알아보았다. 이번 글에서는 조건식에서 참(True)과 거짓(False)을 판단하는 논리 연산자, C++에서 추가된 bool 자료형, 그리고 컴퓨터가 참과 거짓을 바라보는 기준을 정리한다.

1. 컴퓨터에서의 참(True)과 거짓(False)

컴퓨터 프로그래밍에서 조건 판단의 기준은 매우 명확하다.

  • 거짓 (False): 오직 0만을 의미한다.

  • 참 (True): 0이 아닌 모든 수를 의미한다. (1, 100, -5 등 모두 참으로 간주)

논리 연산의 결과는 참일 경우 1, 거짓일 경우 0이라는 대표 정수값으로 반환된다. 초보자가 "오직 1만 참이다"라고 오해하기 쉽지만, 0이 아닌 모든 값은 조건식에서 참으로 평가된다는 점을 명심해야 한다.

2. 참/거짓 전용 자료형: bool

C 언어 초창기에는 참과 거짓을 나타내기 위해 일반 int형 변수(0 또는 1)를 사용했지만, C++에 이르러 참/거짓 전용 자료형인 bool과 키워드(true, false)가 추가되었다.

bool isAlive = true;  // 1바이트 크기, 참(1)을 의미
bool isDead = false;  // 거짓(0)을 의미

bool check = 100;     // 0이 아닌 수가 들어오면 자동으로 true(1)로 변환되어 저장됨
  • 크기: 1 바이트 (8 비트)

  • 특징: bool 변수에 100이나 -5 같은 숫자를 대입해도, 내부적으로는 0이 아니므로 true(1)로 자동 변환하여 저장한다.

3. 주요 논리 연산자 3가지

논리 연산자는 주어진 조건들의 참/거짓 조합을 계산할 때 사용한다.

1) 논리 반전 NOT (!)

  • 원리: 참을 거짓으로, 거짓을 참으로 뒤집는다.

  • !true \rightarrow false (0)

  • !false \rightarrow true (1)

  • 일반 정수에도 적용 가능: !01, !1000이 된다.

2) 논리곱 AND (&&)

  • 원리: 양쪽 피연산자가 모두 참(0이 아닌 값)일 때만 참(1)을 반환한다. (교집합)

  • 하나라도 거짓(0)이면 결과는 거짓(0)이 된다.

int hp = 80;
int mp = 50;

// hp가 0보다 크고 '그리고' mp가 0보다 큰가?
bool canCastSkill = (hp > 0) && (mp > 0); // true && true -> true(1)

3) 논리합 OR (||)

  • 원리: 양쪽 피연산자 중 하나라도 참이면 참(1)을 반환한다. (합집합)

  • 둘 다 거짓(0)일 때만 결과가 거짓(0)이 된다.

bool isVip = false;
bool hasCoupon = true;

// VIP이거나 '또는' 쿠폰이 있는가?
bool canGetDiscount = isVip || hasCoupon; // false || true -> true(1)

4. 논리 연산자의 요약표

연산자기호설명조건 (참이 되는 경우)
NOT!논리 반전거짓(0)을 뒤집을 때
AND&&논리곱모든 피연산자가 참일 때
OR|논리합피연산자 중 하나 이상이 참일 때

💡 마무리하며

  • 컴퓨터는 0만 거짓, 0이 아닌 모든 숫자는 참으로 인식한다.

  • C++의 bool 자료형은 1바이트 크기이며, 어떤 숫자를 대입하든 1 또는 0으로 변환하여 관리한다.

  • 논리 연산자(!, &&, ||)는 향후 배우게 될 조건문(if, switch)과 삼항 연산자의 핵심 기초가 되므로 확실히 정리해 두자.