【发布时间】:2011-06-13 16:00:15
【问题描述】:
什么是 C99 布尔数据类型以及如何使用它?
【问题讨论】:
什么是 C99 布尔数据类型以及如何使用它?
【问题讨论】:
包含<stdbool.h> 标头
#include <stdbool.h>
int main(void){
bool b = false;
}
宏 true 和 false 分别扩展为 1 和 0。
部分7.16 布尔类型和值< stdbool.h >
- 1 标头
<stdbool.h>定义了四个宏。- 2 宏
- 布尔型 扩展为 _Bool。
- 3 其余三个宏适用于#if 预处理指令。他们 是
- true : 扩展为整数常量 1,
- false:扩展为整数常量 0,并且
- __bool_true_false_are_defined 展开为整数常量 1。
- 4 尽管有 7.1.3 的规定,但程序可能未定义,并且可能随后 重新定义宏 bool、true 和 false。
【讨论】:
_Bool(通过赋值、强制转换等)实际上是通过在表达式前面加上!!。
请在DaniWeb 上找到的相关线程上查看答案。
摘录并在此引用,方便参考:-
_Bool:C99 的布尔类型。仅在以下情况下才建议直接使用 _Bool 维护已经存在的遗留代码 为 bool、true 或 错误的。否则,这些宏是 在
<stdbool.h>中标准化 标题。包括那个标题和你 可以像你一样使用 bool C++。
#include <stdio.h>
#include <stdbool.h>
int main ( void )
{
bool b = true;
if ( b )
printf ( "Yes\n" );
else
printf ( "No\n" );
return 0;
}
【讨论】:
_Bool 与 bool 一起存在。对理解很有帮助。