미리 정의된 불리언 상수 `true`·`false`
미리 정의된 불리언 상수 true·false (C23)
이제까지 C에서 참과 거짓을 나타낼 때 1과 0을 쓰거나 <stdbool.h>가 제공하는 매크로인 true·false를 썼어요. C23부터는 이 둘이 매크로가 아니라 키워드로 승격됐어요. 그래서 헤더를 include 하지 않아도 true·false를 그대로 쓸 수 있게 됐죠.
출처: cppreference
본문
문법(Syntax)
true (1) (since C23)
false (2) (since C23)
설명(Explanation)
키워드 true와 false는 미리 정의된 상수예요. 이들은 bool 타입의 비-좌측값(non-lvalue)이에요.
참고(Notes)
bool에서 다른 타입으로의 암묵적 변환은 정수 변환(integral conversions) 문서를, 다른 타입에서 bool로의 암묵적 변환은 불리언 변환(boolean conversions) 문서를 참고해요.
C23 이전에는 true와 false가 <stdbool.h>에서 제공되는 매크로로 구현됐어요. C23에서 구현은 호환성을 위해 bool, true, false를 미리 정의된 매크로로도 정의할 수 있어요.
예제(Example)
#include <assert.h>
int main()
{
assert(true == 1 && 0 == false);
}
C23부터는 assert(true == 1 && 0 == false) 같은 비교가 그대로 성립해요. true는 1, false는 0으로 평가되니까요.
더 알아보기
<stdbool.h>헤더와bool타입에 대한 boolean type 문서를 함께 보면 좋아요.