C99 부울 데이터 유형?


93

C99 부울 데이터 유형은 무엇이며 어떻게 사용합니까?

답변:


109

<stdbool.h>헤더 포함

#include <stdbool.h>

int main(void){
  bool b = false;
}

매크로 truefalse으로 확장 1하고 0각각.

섹션 7.16 부울 유형 및 값< stdbool.h >

  • 1 헤더는 <stdbool.h>4 개의 매크로를 정의합니다.
  • 2 매크로
    • bool은 _Bool로 확장됩니다.
  • 3 나머지 세 개의 매크로는 #if 전처리 지시문에서 사용하기에 적합합니다. 그들은
    • true : 정수 상수 1로 확장됩니다.
    • false : 정수 상수 0으로 확장됩니다.
    • __bool_true_false_are_defined 정수 상수 1로 확장됩니다.
  • 4 7.1.3의 조항에도 불구하고 프로그램은 정의를 정의하지 않고 매크로 bool, true 및 false를 다시 정의 할 수 있습니다.

17
또한 _Bool(할당, 캐스트 등으로) 변환 은 표현식 앞에 !!.
R .. GitHub의 STOP 돕기 ICE

52

DaniWeb 에있는이 관련 스레드에서 여기에 대한 답변을 확인하십시오. .

편리한 참조를 위해 여기에서 추출하고 인용했습니다.


c99에서 새 키워드 사용

_Bool : C99의 부울 유형. _Bool을 직접 사용하는 것은 bool, true 또는 false에 대한 매크로를 이미 정의한 레거시 코드를 유지 관리하는 경우에만 권장됩니다. 그렇지 않으면 해당 매크로가 <stdbool.h> 헤더 에서 표준화됩니다 . 해당 헤더를 포함하면 C ++ 에서처럼 bool을 사용할 수 있습니다.

#include <stdio.h>
#include <stdbool.h>

int main ( void )
{
  bool b = true;

  if ( b )
    printf ( "Yes\n" );
  else
    printf ( "No\n" );

  return 0;
}


18
_Bool와 함께 존재 하는 이유에 대한 설명은 +1 bool. 그것을 이해하는 데 매우 도움이됩니다.
eonil
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.