C

C언어를 가르칩니다.

C C언어를 가르칩니다.

boolean (부울)

boolean 데이터형을 알아봅니다. _Bool과 bool의 차이를 알아봅니다.

boolean (부울)

정의

참(true), 거짓(false), 오로지 둘 중 하나의 값만 가질 수 있는 데이터형입니다. 실제로 저장될 때는 참이면 0이 아닌 값으로, 거짓이면 0으로 저장됩니다.

선언

boolean 데이터형은 두 가지 키워드로 선언할 수 있습니다. 하나는 _Bool, 다른 하나는 bool 입니다. 뭐가 다르냐고요? 그 자체로는 차이점이 없습니다. bool은 _Bool의 별명(alias)입니다. 이들의 키워드와 관련된 차이점이 딱 둘 있습니다.

int main(void)
{
    _Bool a;
    
    return 0;
}

이 코드는 잘 컴파일됩니다.

int main(void)
{
    bool a;
    
    return 0;
}

그러나 이 코드는 일반적으로 컴파일되지 않습니다. 왜냐면, bool 키워드는 stdbool.h 파일(STanDardbool)에 선언되어 있기 때문입니다. 그래서 컴파일러는 "bool은 어디서 튀어나온 근본없는 놈이냐?"하면서 컴파일을 거부합니다. 만약 이 코드가 컴파일이 되었다면, 그건 컴파일러가 파일 의존성을 검사하여 자동으로 stdbool.h를 추가해줬기 때문입니다.

그러므로 bool 키워드를 쓰고 싶다면,

#include <stdbool.h>

를 적어주면 됩니다. _Bool과 bool의 두 번째 차이는 다음 코드를 보면 알 수 있습니다.

#include <stdbool.h>
int main(void)
{
    _Bool areyouhuman=true;
    _Bool iscatcute=false;
    return 0;
}

이 코드는 잘 컴파일되지만,

int main(void)
{
    _Bool areyouhuman=true;
    _Bool iscatcute=false;
    return 0;
}

이 코드는 컴파일되지 않습니다. 왜냐면, true와 false라는 키워드가 선언되어 있지 않기 때문입니다. 그래서 컴파일러가 또 근본 없는 놈이라고 컴파일을 거부합니다. 해결책은 아까와 같이 stdbool.h 파일을 추가하는 것입니다. bool로 선언해도 true false를 쓸 수 있고, _Bool로 선언해도 true false를 쓸 수 있습니다. 어떤 걸 쓰느냐는 자기 자유입니다. 보통 bool을 씁니다. 그게 두 글자나 짧고, 보기도 편하잖아요?

초기화

bool iscatcute=true; // bool형 변수 iscatcute를 true로 초기화합니다.
iscatcute=false; //이제 고양이는 귀엽지 않습니다.
bool isdogcute=1; // 1은 true와 같습니다.
bool amicute=2; // 2도 true와 같습니다.
bool arewecute=-1; // 음수도 true와 같습니다. 일반적으로 0이 아닌 모든 수는 true로 취급됩니다.
bool areyoucute=0; //0은 false와 같습니다.

크기

#include <stdio.h>
int main(void)
{
    printf("%lu",sizeof(bool));
    
    return 0;
}

char과 같이 1바이트를 차지합니다.

댓글

댓글 본문
작성자
비밀번호
버전 관리
truelight
현재 버전
선택 버전
graphittie 자세히 보기