728x90
부울(Boolean) 값과 조건식: C 언어 vs 파이썬 비교
프로그래밍에서 부울 값(Boolean) 은 참(true)과 거짓(false)을 나타내는 논리적 데이터입니다. 조건문이나 반복문을 제어할 때 매우 중요한 역할을 합니다.
이 문서에서는 C 언어와 파이썬의 부울 값 사용법, 기본 조건식, 데이터의 참/거짓 판별 방식 등을 비교해 설명합니다.
1. 부울 값이란?
- 파이썬: True, False는 내장된 불리언 타입이며 실제로는 int의 서브클래스입니다.
- C 언어: 0은 false, 0이 아닌 값은 모두 true로 간주됨. C99 이후 <stdbool.h> 사용 시 true, false 키워드 제공.
Python 예제
is_valid = True # 참
is_empty = False # 거짓
print(True + True) # 2 (True는 1로 간주됨)
print(isinstance(True, int)) # True
C 예제
#include <stdbool.h>
#include <stdio.h>
int main() {
bool is_valid = true; // 참
bool is_empty = false; // 거짓
printf("bool 크기: %zu바이트\n", sizeof(bool)); // bool은 일반적으로 1바이트
printf("true + true = %d\n", true + true); // 2
return 0;
}
2. 조건식 평가 방식
✅ Python 조건 평가 방식
- 숫자 0, 빈 문자열 '', 빈 리스트 [], None 등은 모두 False
- 나머지 값은 True
if 0:
print("실행 안 됨")
if 123:
print("실행됨")
✅ C 조건 평가 방식
- 0은 false, 나머지 정수는 true
#include <stdio.h>
int main() {
if (0) {
printf("실행 안 됨\n");
}
if (123) {
printf("실행됨\n");
}
return 0;
}
3. 비교 연산자와 논리 연산자
비교 연산자
연산자의미
== | 같다 |
!= | 다르다 |
> | 크다 |
< | 작다 |
>= | 크거나 같다 |
<= | 작거나 같다 |
논리 연산자
Python | C 언어 | 의미 | ||
and | && | 논리 AND | ||
or | ` | ` | 논리 OR | |
not | ! | 논리 NOT |
Python 예제
x = 10
y = 5
if x > 5 and y < 10:
print("조건이 모두 참입니다.")
C 예제
#include <stdio.h>
int main() {
int x = 10;
int y = 5;
if (x > 5 && y < 10) {
printf("조건이 모두 참입니다.\n");
}
return 0;
}
4. 단축 평가 (Short-Circuit Evaluation)
논리 연산자 and, or (Python) / &&, || (C)는 앞의 조건에 따라 뒤를 평가하지 않을 수 있습니다. 이를 단축 평가라고 합니다. C 언어에서는 특히 조건 분기와 함수 호출 최적화에서 많이 사용됩니다.
Python 예제
def side_effect():
print("실행됨")
return True
if False and side_effect(): # 앞 조건이 False라서 side_effect()는 실행되지 않음
pass
C 예제
#include <stdio.h>
int side_effect() {
printf("실행됨\n");
return 1log_and_return(const char *label, int value) {
printf("%s 평가됨\n", label);
return value;
}
int main() {
if (0 && side_effect()) {
// 실행 안 됨
log_and_return("오른쪽", 1)) {
printf("이 줄은 실행되지 않음\n");
}
if (1 || log_and_return("오른쪽", 0)) {
printf("이 줄은 실행됨 (오른쪽은 평가 안 됨)\n");
}
return 0;
}
5. 부울값 반환 함수 예제
함수에서 조건 결과를 bool 타입으로 반환하는 방식은 조건 판단을 모듈화할 때 유용합니다.
C 예제
#include <stdio.h>
#include <stdbool.h>
bool is_even(int n) {
return n % 2 == 0;
}
int main() {
printf("4는 짝수인가요? %d\n", is_even(4)); // 1 출력
printf("5는 짝수인가요? %d\n", is_even(5)); // 0 출력
return 0;
}
Python 예제
def is_even(n):
return n % 2 == 0
print(is_even(4)) # True
print(is_even(5)) # False
6. 삼항 연산자 (C 전용)
조건문을 간단하게 표현할 때 삼항 연산자를 사용할 수 있습니다.
#include <stdio.h>
int main() {
int score = 80;
const char* result = (score >= 60) ? "합격" : "불합격";
printf("결과: %s\n", result);
return 0;
}
7. 드모르간 법칙
논리 표현을 부정할 때 유용한 수학적 법칙으로, 조건 최적화나 부정 조건의 명확화에 사용됩니다.
법칙 공식
- !(A && B) == (!A || !B)
- !(A || B) == (!A && !B)
C 예제
#include <stdio.h>
int main() {
int x = -5, y = 10;
if (!(x > 0 && y > 0)) {
printf("x 또는 y가 0 이하입니다.\n");
}
// 동일한 의미
if (x <= 0 || y <= 0) {
printf("드모르간 형태로 표현됨\n");
}
return 0;
}
마무리 정리
부울(Boolean) 값은 조건문과 반복문을 구현하는 핵심 도구입니다. 특히 C 언어에서는 논리 연산자의 동작 원리와 단축 평가, 메모리 구조까지 이해하면 더욱 안전하고 효율적인 코드를 작성할 수 있습니다. Python과 함께 비교하며 공부하면 개념이 훨씬 탄탄해집니다.
728x90
'개발이야기 > C언어' 카테고리의 다른 글
[C언어] 스택 (0) | 2025.06.15 |
---|---|
[C언어] 함수 (0) | 2025.06.14 |
[C언어] 조건문과 반복문 (0) | 2025.06.14 |
[C언어] 언어 표준 입출력 함수 (1) | 2025.06.14 |
[C언어] 산술 연산자 (0) | 2025.06.14 |