미리 정의된 불리언 상수 `true`·`false`

미리 정의된 불리언 상수 true·false (C23)

이제까지 C에서 참과 거짓을 나타낼 때 10을 쓰거나 <stdbool.h>가 제공하는 매크로인 true·false를 썼어요. C23부터는 이 둘이 매크로가 아니라 키워드로 승격됐어요. 그래서 헤더를 include 하지 않아도 true·false를 그대로 쓸 수 있게 됐죠.

출처: cppreference

본문

문법(Syntax)

true     (1)  (since C23)
false    (2)  (since C23)

설명(Explanation)

키워드 truefalse는 미리 정의된 상수예요. 이들은 bool 타입의 비-좌측값(non-lvalue)이에요.

참고(Notes)

bool에서 다른 타입으로의 암묵적 변환은 정수 변환(integral conversions) 문서를, 다른 타입에서 bool로의 암묵적 변환은 불리언 변환(boolean conversions) 문서를 참고해요.

C23 이전에는 truefalse<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 문서를 함께 보면 좋아요.