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
을 사용하여 1
을 TRUE
, 0
을 FALSE
로 정의하여 사용한다.
- 또한, 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
타입을 사용할 수 있게 되었고, 1
을 true
, 0
을 false
로 정의하여 사용할 수 있게 되었다.
References