C语言中有没有bool类型?

问题
首先请大家回想一下,在你们所编写的C程序中,是否使用过bool(布尔)类型?bool类型一般用来表示真假,是程序设计中一个很基本的数据类型。但是,C语言里面并不直接支持bool类型。一些初学C语言,或者是对C语言不是很精通的朋友肯定觉得很奇怪,为什么在C++,JAVA等语言里使用的bool类型,在C语言里无法使用了呢?

问题解析
bool类型的变量,为0时表示为假,为非0时表示为真。但是原始C语言中并不支持bool类型,若需要使用bool类型可以借用int类型自己定义一下,例如:

[cpp]
typedef int bool; 
#define TRUE 1 
#define FALSE 0 

然后就可以在程序中使用bool类型了。用32位的int类型来当bool使用,这样无疑浪费了内存资源,因此对于内存敏感的程序中可以使用char来定义bool类型:


[cpp] 
typedef char bool; 
#define TRUE 1 
#define FALSE 0 

进一步讨论
C语言并非没有bool类型,而是在C99标准之前没有。C99标准中新增的头文件中引入了bool类型,与C++中的bool兼容。该头文件为stdbool.h,其源码如下所示:


[cpp] 
#ifndef _STDBOOL_H 
#define _STDBOOL_H 
 
#ifndef __cplusplus 
 
#define bool    _Bool 
#define true    1 
#define false   0 
 
#else /* __cplusplus */ 
 
/* Supporting <stdbool.h> 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标准为bool类型引入的新的关键字,sizeof(_Bool)的值为1,表面其为bool类型。既然为bool类型,那么0表示为假,其他任何值都表示为真,我们可以做一个小实验来测试一下:
[cpp] 
bool bb=10; 
bool aa=0; 
printf(" %d %d  \n",bb,aa); 

输出的结果为1和0,这表明bool类型变量赋值为非0值得时候,只存储其值为1。


最后,当需要使用bool类型时,推荐使用C99标准的bool类型而不是自己去定义,引入头文件<stdbool.h>即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值