C语言中的bool类型

之前一直都没有注意到,最近在用C语言写DSP算法时,偶然间发现我函数中定义的bool类型的变量在VC6.0(我主要用它来检查一下语法错误)中编译居然报错了,说是bool类型没有定义。用了这么久的C和C++了,一直觉得bool这种基本类型,应该是C语言内置的类型,怎么会没有定义呢?事实证明,我的想法完全错误了。

      有了网络,一切问题都变得那么容易了,我很容易地搜到了相关的解答。

      C语言里面是没有bool(布尔)类型的,C++里面才有,这就是说,在C++里面使用bool类型是没有问题的。bool类型有只有两个值:true =1 、false=0。

      但是,C99标准里面,又定义了bool类型变量。这时,只要引入头文件 <stdbool.h>,就能在C语言里面正常使用bool类型。这点我在Fedora9下验证过了,它自带的编译器是 gcc 4.3.0,符合C99标准。但是在VC6.0中,会报找不到头文件 stdbool.h 的错误,看来VC6.0确实比较老了。

      所以,为了兼容各种编译器,还是自己宏定义吧。^_^

            #define bool char //宏替换为char类型是因为char与bool都只占一个字节,比较相似
            #define ture 1
            #define false 0

       当然,宏定义的bool与真实的关键字bool还是有差别的。关键字bool修饰的变量,无论赋予其任何非零值,其存储的内容都是“00000001”,而宏定义的bool所修饰的变量,其存储的内容完全取决于我们赋的值。因此,当给宏定义的bool修饰的变量赋值时,老老实实赋予true或false,条件判断时也老老实实与true或false进行比较。
 

发布了12 篇原创文章 · 获赞 49 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_36570733/article/details/95077241