浅谈C语言中的布尔(bool)类型
来源:互联网 发布:淘宝花卉种子 编辑:程序博客网 时间:2024/05/16 12:25
转自:http://blog.chinaunix.net/uid-8440532-id-34776.html
注:本文仅针对符合C99标准的编译器,比如:gcc3.4.5。VC6等编译器不在本文讨论范围内。
我们知道在C++里有专门的bool类型,用来表示真或假。但是在C语言里没有这样的类型(至少我是一直这么认为的),表达式的值0为假,非0为真。所以条件判断语句( if(...)、while(...) )非常灵活,甚至一个指针类型都可以是条件表达式。
为了使程序更清晰,我们常常会给出如下的宏定义:
typedef int BOOL;
#define TRUE 1
#define FALSE 0
这是最常见的写法,能被任何C语言编译器认可。
今天我在一段程序里看见这么一行 #include ,这个陌生的头文件还以std打头而且还和bool有关,引起了我的警觉,立刻百度之。得知这是C99标准新增的头文件,意在引入bool类型,使之和C++兼容。随后我看了一下这个头文件的源代码,内容如下:
/*
* ISO C Standard: 7.16 Boolean type and values
*/
#ifndef _STDBOOL_H
#define _STDBOOL_H
#ifndef __cplusplus
#define bool _Bool
#define true 1
#define false 0
#else /* __cplusplus */
/* Supporting in C++ is a GCC extension. */
#define _Bool bool
#define bool bool
#define false false
#define true true
#endif /* __cplusplus */
/* Signal that all the definitions are present. */
#define __bool_true_false_are_defined 1
#endif /* stdbool.h */
这个头文件很短,而且也很明了,不过我对_Bool这个类型产生的兴趣。又一翻百度,发现这是C99标准引入的新的关键字。对,是关键字,而不是宏定义,也不是typedef。通过sizeof(_Bool);得知这个类型占1个字节,而且无论给这个类型的变量赋任何非0整数值,其值都是1,这也说明了他不是其他整数类型的别名。
好了,其实说白了,C语言不是没有布尔类型,只能说在C99标准之前没有。现在只要在源文件中包含stdbool.h这个头文件,就可以在C语言里像C++那样使用bool类型了。
- 浅谈C语言中的布尔(bool)类型
- 浅谈C语言中的布尔(bool)类型
- C语言中的布尔(bool)类型
- C语言中的布尔(bool)类型
- C语言的布尔类型(_Bool, bool)
- C语言的布尔类型bool
- 一起talk C栗子吧(第一百六十八回:C语言实例--C语言中的布尔--bool类型)
- c语言中的布尔类型
- C语言中的bool类型
- C语言中的Bool类型
- C语言中的bool类型
- C语言中的Bool类型
- c语言中的bool类型
- [从C到C++] 1.3 C++布尔类型(bool)
- [从C到C++] 1.3 C++布尔类型(bool)
- C++布尔类型(bool)
- C++布尔类型(bool)
- 【iOS开发之Objective-C】布尔(Boolean)类型--BOOL
- MySQL优化存储IP地址
- 记录一些小点 [随时更新] [神犇勿进] (1)
- Linux学习之if语句
- Spring 源码下载---从github导入源码到idea
- 加油,今天开始,希望每天都有一点点进步!
- 浅谈C语言中的布尔(bool)类型
- You don't have permission to access on this server解决办法
- ubuntu/var/log/下各个日志文件
- 交叉编译百度开放云的MQTT-c时遇到的问题总结
- LogAggregator
- NPM安装与配置
- Http status: 200 OK ajaxOptions: parsererror thrownError: SyntaxError: Unexpected token < in JSON at
- nyist 305 表达式求值
- Node.js Hello