미리 정의된 불리언 상수(Predefined Boolean constants)(C23)

미리 정의된 불리언 상수(Predefined Boolean constants)(C23)

C23부터 truefalse가 언어 차원의 키워드가 됐어요. 그전까지는 <stdbool.h> 헤더의 매크로로 true/false를 썼는데, 이제는 헤더 없이도 진릿값을 읽기 좋은 이름으로 표현할 수 있죠.

출처: cppreference

본문

문법

true (1) (C23부터)
false (2) (C23부터)

동작 방식(Explanation)

키워드 truefalse는 미리 정의된 상수를 나타내요. 둘 다 bool 타입이면서 lvalue가 아니에요.

주의할 점(Notes)

bool에서 다른 타입으로의 암시적 변환은 정수 변환(integral conversions)에서, 다른 타입에서 bool로의 암시적 변환은 불리언 변환(boolean conversions)에서 다뤄요.

C23 이전에는 truefalse<stdbool.h>에서 제공하는 매크로로 구현됐어요. 호환성을 위해 C23에서도 구현이 bool, true, false를 미리 정의된 매크로로 제공할 수는 있어요.

예제

#include <assert.h>

int main()
{
    assert(true == 1 && 0 == false);
}

true1과 같고 0false와 같다는 점을 검사하는 코드예요. 두 단언이 모두 참이므로 프로그램은 정상적으로 종료돼요.

더 알아보기

  • _Bool 타입: 불리언 값을 담는 정수 타입.
  • 불리언 변환(boolean conversion): 다른 타입의 값을 bool로 바꾸는 암시적 변환 규칙.