![4e7fee18a0bc0e0f773f33288de9390c.png](https://img-blog.csdnimg.cn/img_convert/4e7fee18a0bc0e0f773f33288de9390c.png)
布尔类型,简单地说,就是一个表示真值或者假值的类型。
我们在很多程序中,都会用到,例如:
#include #include void PrintSignalOfInt(int iValue){ if (iValue > 0) { printf("Positive"); } else { printf("Negative or 0."); }}int main(){ PrintSignalOfInt(-123); return 0;}
上面的表达式iValue > 0,其实就会返回布尔类型的值:
(1)返回“真值”执行一个分支;
(2)返回“假值”执行另一个分支。
要是世界这么美好就太好了!
![0f9a83b40ca958173ee6bf33219f1cc4.png](https://img-blog.csdnimg.cn/img_convert/0f9a83b40ca958173ee6bf33219f1cc4.png)
现实情况是,在ANSI C中,没有布尔类型!
不信,你看下面的代码:
程序#include int main(){ printf("result of 3 > 2 is : %d", 3 > 2); return 0;}执行结果result of 3 > 2 is : 1
上面的代码表明:3 > 2 表达式的结果就是1,是个整数,并没有所谓的布尔类型。
用整数代替现实生活中的真假,让有些代码,读起来不是滋味
例如:
代码#include int main(){ int i=5; while (i) { printf("i is : %d", i); i--; } return 0;}编译后运行结果为:i is : 5i is : 4i is : 3i is : 2i is : 1
当我看到 if (int值) 或者 while (int值)之类的代码,总是感觉没那么畅快。
好了,制定C标准的专家也有和我一样的感觉了:-)
C99的解决方案
1、为了解决上面的问题,C99引入了_Bool类型,只能存入数值0和1。
2、但是我更喜欢用C99引入的标准头文件stdbool.h:
(1)定义了一种类型bool;
(2)定义了两种布尔常量true,false;
(3)可以给bool类型赋值true或者false;
3、需要注意的是,我们编写C程序,常常使用C++编译器,而C++中是有布尔类型,并且有true和false布尔常量的哦。