C99布尔数据类型?

Eon*_*nil 91 c types boolean c99

什么是C99布尔数据类型以及如何使用它?

Pra*_*rav 108

包括<stdbool.h>标题

#include <stdbool.h>

int main(void){
  bool b = false;
}
Run Code Online (Sandbox Code Playgroud)

truefalse扩展到10分别.

Section 7.16 布尔类型和值< stdbool.h >

  • 1标题定义了<stdbool.h>四个宏.
  • 2宏
    • bool扩展为_Bool.
  • 3其余三个宏适用于#if预处理指令.他们是
    • true:扩展为整数常量1,
    • false:扩展为整数常量0,和
    • __bool_true_false_are_defined扩展为整数常量1.
  • 4尽管有7.1.3的规定,程序可能不完整,然后可能重新填充宏bool,true和false.

  • 还应该注意的是,转换为`_Bool`(通过赋值,强制转换等)实际上是通过在表达式前添加`!!`来实现的. (13认同)

eva*_*rix 49

请在DaniWeb上找到的相关主题上查看答案.

提取并引用此处以方便参考: -


在c99中使用新关键字

_Bool:C99的布尔类型.只有在维护已经为bool,true或false定义宏的遗留代码时,才建议直接使用_Bool.否则,这些宏在<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;
}
Run Code Online (Sandbox Code Playgroud)

  • +1解释为什么`_Bool`与`bool`一起存在.理解它非常有帮助. (14认同)