불리언 타입 `_Bool` — 0이 아니면 1

불리언 타입 _Bool — 0이 아니면 1

C에서 참/거짓을 담는 타입을 써야 할 때, 정수만으로도 충분해 보일 수 있어요. 그런데 다른 타입의 값을 _Bool로 바꿀 때 정확히 어떤 규칙으로 0과 1이 결정되는지 궁금할 거예요. 이 문서의 핵심은 단 하나예요. 0이면 0, 0이 아니면 1.

출처: cppreference

본문

어떤 스칼라 값이든 _Bool로 변환할 때, 그 값이 0과 같으면 결과는 0이에요. 그 외의 경우 결과는 1이에요.

참고(Notes)

NaN은 0과 같지 않으므로 1로 변환돼요.

예제(Example)

#include <stdio.h>

int main(void)
{
    _Bool a = 0.0;
    _Bool b = 8;
    _Bool c = 0.0/0.0;

    printf("%d\n", a);
    printf("%d\n", b);
    printf("%d\n", c);

    return 0;
}

가능한 출력:

0
1
1

a는 0.0이라 0이 돼요. b는 8(0이 아니므로)이라 1이 되고, c0.0/0.0, 즉 NaN이라 1이 돼요.

더 알아보기