过去,我们一般使用 int 型变量表示真/假。C99 新增了 _Bool 类型(布尔类型)用于表示真/假。_Bool 类型的变量的值只能是 0 或者 1。无论赋予任何非零值给 _Bool 类型的变量,它的值都只会是 1。例如:
_Bool i_am_true = 15; // i_am_true 的值是 1
_Bool am_i_true = (var > 15); // 当 var 大于 15 时,am_i_true 的值为 1
顺带一提,包围 var > 15 的括号要不要都一样,因为 > 的优先级比 = 高。不过,使用括号可以使代码的意思更加清晰明了。对于各种运算符的优先级,其实没有必要死记硬背,了解一下就可以了。实在不记得到底哪个运算符的优先级更高的时候,就使用括号吧。此外,定义 _Bool 变量时,最好选一个意思明确的名字,让人一看就知道它是做什么用的。例如:
_Bool no_error = 1;
while ( no_error )
{
/* ... ... */
/* if error happens */
/* no_error = 0; */
/* ... ... */
}
包含标准头文件 stdbool.h 后,我们可以用 bool 代替 _Bool ,true 代替 1 ,false 代替 0 。例如:
bool no_error = true;
no_error = false;
这么做是为了和 C++ 兼容。注意,stdbool.h 是 C99 新增的。
使用文本编辑器打开 stdbool.h,一般都会找到这样三句
#define bool _Bool
#define true 1
#define false 0
这就是为什么包含 stdbool.h 后可以用 bool 代替 _Bool ,true 代替 1 ,false 代替 0 。
本文来自: DZ3W.COM 原文网址:http://www.dz3w.com/mcu/clanguage/2314.html