Skip to content

81. 불 자료형


1. 키워드

  • 불 자료형


2. 불 자료형

  • 처음 C가 개발될 당시에는 따로 불 자료형이 없었다.
  • 그래서 숫자 1을 참, 0을 거짓으로 정했고 지금까지도 바뀌지 않고 그대로 사용되고 있다.
  • 시간이 흘러 C++이 나왔고, C++에서는 bool 타입과 true, false 값을 지원한다.
  • 그리고 최근에 나온 언어들도 대부분 전용 불 자료형을 지원하고 있다.
  • 하지만 C에서는 불 자료형을 공식적으로 지원하지 않았기 때문에 다음과 같은 방식으로 참, 거짓 값을 사용하고 있다.


typedef enum _boolean
{
    FALSE,
    TRUE
} boolean;
#define FALSE 0
#define TRUE 1


  • 보통 열거형으로 TRUE, FALSE를 만들거나, #define을 사용하여 1TRUE, 0FALSE로 정의하여 사용한다.
  • 또한, C++의 true, false와 혼동되지 않도록 모두 대문자로 된 TRUE, FALSE를 주로 사용하고 있다.
  • 지금도 C 소스 코드에서 많이 볼 수 있는 TRUE, FALSE는 모두 이런 방법을 정의하여 사용하는 것들이다.
  • 결국 C에서도 불 자료형의 필요성이 계속 제기되면서 C99 표준부터 stdbool.h 헤더 파일이 추가되었고, 모두 소문자로 된 bool 타입과 true, false 값을 사용할 수 있게 되었다.


  • 다음은 stdbool.h 헤더 파일의 내용이다.


/* stdbool.h standard header */

#ifndef _STDBOOL
#define _STDBOOL

#define __bool_true_false_are_defined  1

#ifndef __cplusplus

#define bool   _Bool
#define false  0
#define true   1

#endif /* __cplusplus */

#endif /* _STDBOOL */

/*
 * Copyright (c) 1992-2010 by P.J. Plauger.  ALL RIGHTS RESERVED.
 * Consult your license regarding permissions and restrictions.
V5.30:0009 */


  • C99부터 공식적으로 _Bool이라는 자료형이 추가되었다.
  • 여기서 _Bool을 다시 bool로 정의하여 bool 타입을 사용할 수 있게 되었고, 1true, 0false로 정의하여 사용할 수 있게 되었다.

References