<개인공부>/[C언어, C++]

[C언어/C++] C언어 bool 타입에 대해서 (C99)

BlockDMask 2021. 1. 18. 00:30
반응형

안녕하세요. BlockDMask 입니다.
오늘은 C언어 C99 이후부터 사용 할 수 있는 bool 타입에 대해서 알아보려고 합니다.

C++에서는 기본 자료형으로 bool 타입이 존재하니,
C++을 하시는 분들은 굳이 이 포스팅을 보실 필요는 없을 것 같습니다.

<목차>
1. C언어 bool 타입 설명
2. C언어 bool 타입 예제

 

 

1. C99 bool 타입 설명


C언어에도 bool 타입이 있습니다.
진짜 있습니다.
정말이에요.

C99 bool 타입 헤더파일, 선언 방법 및 초기화 방법

C언어 표준 90년대 후반에 만들어진 표준 C99에서 bool 타입이 만들어 졌습니다.

- 헤더파일
<stdbool.h>

- 사용방법
타입 이름 : bool
타입의 값 : true, false

한번 예제를 바로 볼까요?

1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
#include <stdbool.h>
 
int main(void)
{
    bool isEven = true;
    bool isOdd = false;
 
    return 0;
}
 
cs

이런식으로 stdbool.h 헤더파일을 추가하면 C언어에서도 true와 false를 나타내는 boolean 타입을 사용할 수 있습니다.

 

bool 타입의 사이즈는?

그럼 bool 타입의 사이즈는 어느정도 일까요? 바로 sizeof()를 이용해서 한번 출력해 보겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include <stdbool.h>
 
int main(void)
{
    bool isEven = true;
 
    printf("int : %d\n"sizeof(int));
    printf("double : %d\n"sizeof(double));
    printf("bool : %d\n"sizeof(bool));
    printf("bool : %d\n"sizeof(isEven));
 
    return 0;
}
cs

bool 타입의 사이즈는 1byte 인 것을 알 수 있습니다.

 

자, 이제 C언어 에서도 bool 타입 쓰세요.

#define TRUE 1
#define FALSE 0 이런건 더이상 사용하지 말고

bool isEven = true;
bool isOdd = false; 이렇게 bool 타입을 사용하십시다.

**제가 C언어를 처음 배웠을때가 2010? 2011? 2012? 이쯤이었는데, 왜 1990년대 후반에 나온 C99 표준으로 이미 존재하는 bool 타입이 없다고 배웠을까요? 이상하네요~

 

 

2. C99 bool 타입 예제


2-1) C언어 bool 타입 예제 1 - 무한 루프

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdbool.h>
 
int main(void)
{
    int num;
 
    while (true)
    {
        printf("숫자 입력 : ");
        scanf("%d"&num);
        
        if (num == 0)
        {
            printf("굿. 프로그램 종료\n");
            break;
        }
                    
        printf("ㄴㄴ 다시 입력좀\n");
    }
 
    return 0;
}
cs

C99 bool 예제1 : 무한루프

이렇게 while(true)를 통해서 무한루프를 만들 수 있습니다.
C언어에서 bool 이 없다고 배웠던 과거에는 while(1) 이렇게 했었었죠.

이제는 당당하게 C언어에서도 true, false를 이용합니다.

 

2-2 ) C언어 bool 타입 예제 2 - if 문 사용

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
#include <stdio.h>
#include <stdbool.h>
 
int main(void)
{
    // 예제1
    if (true)
    {
        printf("true 입니다.\n\n");
    }
 
    if (false)
    {
        printf("false 입니다.\n\n");
    }
 
    // 예제2
    bool isEven = false;
    if (4 % 2 == 0)
    {
        isEven = true;
    }
    else
    {
        isEven = false;
    }
 
    // if(isEven == true)
    if (isEven)
    {
        printf("4는 짝수 입니다.\n");
    }
    else
    {
        printf("4는 홀수 입니다.\n");
    }
 
    return 0;
}
cs

C언어 bool 예제2

코드가 매우 비효율 적으로 보이지만 예제를 위함이니 이해해주시면 감사하겠습니다.
이렇게 bool 타입에서 true, false를 if 문에서 사용할 수 있습니다.
if(isEven) 처럼 bool 타입 자체를 넣어도 상관없고
주석 처리한 부분 처럼 if(isEven == true) 이런식으로 if 조건문을 작성해 주셔도 상관없습니다.
코드 스타일에 따라 다른것이기 때문입니다.

 

 

이상으로. C언어 bool 타입에 대해서 알아보았습니다.
여러분! C언어에서도 bool 타입 쓸 수 있습니다.
감사합니다.

반응형