본문 바로가기

카테고리 없음

C의 부울값

C 언어에서 부울(boolean) 값은 논리적인 참(true) 또는 거짓(false) 값을 표현하는데 사용됩니다. C 언어에서는 부울 값을 표현하기 위해 몇 가지 방법이 있으며, C89/C90 표준에서는 부울 타입이 정의되어 있지 않았으나, C99 표준부터는 _Bool 타입이 추가되었습니다. C++와 C11 표준 이후에는 stdbool.h 헤더 파일이 도입되어 부울 값을 쉽게 사용할 수 있게 되었습니다.

1. C89/C90에서의 부울 표현

C89/C90 표준에서는 부울 타입이 정의되어 있지 않으므로, 부울 값을 표현하기 위해 정수형(int)을 사용하는 것이 일반적입니다. 보통 0은 거짓(false), 1은 참(true)을 나타냅니다.

c
코드 복사
#include <stdio.h> int main() { int isTrue = 1; // 참 (true) int isFalse = 0; // 거짓 (false) if (isTrue) { printf("isTrue는 참입니다.\n"); } if (!isFalse) { printf("isFalse는 거짓입니다.\n"); } return 0; }

2. C99 이후의 _Bool 타입

C99 표준부터는 _Bool 타입이 추가되었습니다. _Bool 타입은 0과 1의 값을 가지며, 0은 거짓, 1은 참을 나타냅니다.

_Bool 타입 사용 예제

c
코드 복사
#include <stdio.h> #include <stdbool.h> // C99에서의 bool을 지원 int main() { _Bool isTrue = 1; // 참 (true) _Bool isFalse = 0; // 거짓 (false) if (isTrue) { printf("isTrue는 참입니다.\n"); } if (!isFalse) { printf("isFalse는 거짓입니다.\n"); } return 0; }

3. stdbool.h 헤더와 bool 타입

C99부터 stdbool.h 헤더 파일이 도입되어, bool이라는 별칭을 사용하여 _Bool 타입을 더 직관적으로 사용할 수 있습니다. 이 헤더 파일에서는 true와 false라는 매크로도 정의되어 있습니다.

stdbool.h 사용 예제

c
코드 복사
#include <stdio.h> #include <stdbool.h> // C99에서의 bool과 true, false를 지원 int main() { bool isTrue = true; // 참 (true) bool isFalse = false; // 거짓 (false) if (isTrue) { printf("isTrue는 참입니다.\n"); } if (!isFalse) { printf("isFalse는 거짓입니다.\n"); } return 0; }

4. 논리 연산자

부울 값을 다룰 때 사용되는 주요 논리 연산자는 다음과 같습니다:

  • && (논리 AND): 두 조건이 모두 참일 때 참.
  • || (논리 OR): 두 조건 중 하나라도 참일 때 참.
  • ! (논리 NOT): 조건이 거짓일 때 참, 참일 때 거짓.

논리 연산자 예제

c
코드 복사
#include <stdio.h> #include <stdbool.h> int main() { bool a = true; bool b = false; if (a && b) { printf("a와 b가 모두 참입니다.\n"); } else { printf("a와 b 중 하나 또는 모두 거짓입니다.\n"); } if (a || b) { printf("a 또는 b 중 하나는 참입니다.\n"); } if (!b) { printf("b는 거짓입니다.\n"); } return 0; }

이 예제에서는 논리 연산자를 사용하여 두 개의 부울 값을 결합하고 결과를 출력합니다.

5. C11 이후의 _Bool과 bool

C11 표준에서도 _Bool과 stdbool.h를 그대로 사용할 수 있으며, C++에서는 bool 타입이 기본적으로 지원되므로 C++에서는 stdbool.h가 필요하지 않습니다.