불리언 타입 `_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이 되고, c는 0.0/0.0, 즉 NaN이라 1이 돼요.
더 알아보기
- C23의
true·false키워드에 대한 Predefined Boolean constants 문서를 함께 보면 좋아요. _Bool의 산술 타입 전반에서의 위치는 Arithmetic types 문서에서 다뤄요.