C语言学习指南:从规范编程到专业级开发
上QQ阅读APP看书,第一时间看更新

3.7 如何在C语言中表示布尔值

布尔值(Boolean值)是那种只能取true(真)或false(假)的值。在某些系统上,YES或yes相当于true(真),NO或no相当于false(假)。比方说,“Is today Wednesday?”(今天是星期三吗?)只有七分之一的概率为true,如果今天不是星期三,那么它就是false。

在C99标准出现之前,C语言并没有明确为布尔值设计某种类型。C语言把跟0完全相等的值视为布尔值中的false值,并把其余的值(也就是跟0不完全相等,或者说,不跟0完全相等的值)视为布尔值中的true值。实数很少会跟0完全相等,尤其是当你在其上执行了各种操作之后,更难确保结果恰好为0。因此,如果一个值是采用与实数有关的某种类型来表示的,那么它在C语言中几乎总是true值,用这样的类型来表示布尔值是不明智的。

从C99开始,我们可以使用_Bool类型来表示这种只能为0(假)或1(真)的值。如果引入了stdbool.h文件,那么还可以用bool类型来表示。这个词要比难写的_Bool一词更清晰。

要想正确使用布尔值,你可以遵循这样一条建议,也就是总应该采用0或1来明确地表示假或真,而不要用那种不太容易判定真假的值来表示,因为编译器在判断某个值是不是相当于布尔值中的真值时所使用的规则可能比较微妙。