bool 값 과 bool 형
정의
- bool 값(boolean value) : 참과 거짓을 표현하는 값
- bool 형 : bool 값을 값으로 가지는 자료형
C 언어에서 불 값의 표현
| bool | 표현 방법 |
|---|---|
| 거짓 | 0 |
| 참 | 1 또는 0이 아닌 값 |
bool 형의 역사
- C 언어는 원래 정수형(int)만을 사용해 참과 거짓을 표현했기 때문에 C89, C90 C 표준에는 내장된 bool 형이 없었음
- 하지만 C99 표준 이후부터는 bool 형을 지원하며, 사용할 수 있게 됨
예시
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h> // bool 은 stdbool 에 정의됨
void println(char* str){
printf("%s\n", str);
}
int main() {
if (1) println("if 조건문이 1일 경우의 출력입니다.");
if (0) println("if 조건문이 0일 경우의 출력입니다.");
if (true) println("if 조건문이 true일 경우의 출력입니다.");
if (false) println("if 조건문이 false일 경우의 출력입니다.");
if (2) println("if 조건문이 2일 경우의 출력입니다.");
if (2.14f) println("if 조건문이 2.14f일 경우의 출력입니다.");
if (2.14) println("if 조건문이 2.14일 경우의 출력입니다.");
if ('c') println("if 조건문이 'c'일 경우의 출력입니다.");
if ("hello") println("if 조건문이 hello일 경우의 출력입니다.");
bool is_active;
is_active = 1;
if (is_active) println("활성화 되어 있습니다.");
else println("비활성화 되어 있습니다.");
}
1
2
3
4
5
6
7
8
if 조건문이 1일 경우의 출력입니다.
if 조건문이 true일 경우의 출력입니다.
if 조건문이 2일 경우의 출력입니다.
if 조건문이 2.14f일 경우의 출력입니다.
if 조건문이 2.14일 경우의 출력입니다.
if 조건문이 'c'일 경우의 출력입니다.
if 조건문이 hello일 경우의 출력입니다.
활성화 되어 있습니다.
stdbool.h 살펴보기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
/*===---- stdbool.h - Standard header for booleans -------------------------===
*
* Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
* See https://llvm.org/LICENSE.txt for license information.
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
*
*===-----------------------------------------------------------------------===
*/
#ifndef __STDBOOL_H
#define __STDBOOL_H
#define __bool_true_false_are_defined 1
#if defined(__MVS__) && __has_include_next(<stdbool.h>)
#include_next <stdbool.h>
#else
#if defined(__STDC_VERSION__) && __STDC_VERSION__ > 201710L
/* FIXME: We should be issuing a deprecation warning here, but cannot yet due
* to system headers which include this header file unconditionally.
*/
#elif !defined(__cplusplus)
#define bool _Bool
#define true 1
#define false 0
#elif defined(__GNUC__) && !defined(__STRICT_ANSI__)
/* Define _Bool as a GNU extension. */
#define _Bool bool
#if defined(__cplusplus) && __cplusplus < 201103L
/* For C++98, define bool, false, true as a GNU extension. */
#define bool bool
#define false false
#define true true
#endif
#endif
#endif /* __MVS__ */
#endif /* __STDBOOL_H */
#define true 1: true 라는 상수에 1이라는 정수값 부여#define false 0: false 라는 상수에 0이라는 정수값 부여
Comments