加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 在C99中需要_Bool吗?

发布时间:2020-12-16 10:34:09 所属栏目:百科 来源:网络整理
导读:我正在读一本关于C的书. 它说C99添加了一个数据类型_Bool. 它基本上是一个int但只存储0或1. 现在我不明白为什么需要这样的数据类型. 我们已经有bool隐式转换为int,反之亦然. 那么请有人告诉我这种数据类型有用的情况. PS:C似乎不支持如here所见的数据类型.
我正在读一本关于C的书.
它说C99添加了一个数据类型_Bool.
它基本上是一个int但只存储0或1.
现在我不明白为什么需要这样的数据类型.
我们已经有bool隐式转换为int,反之亦然.
那么请有人告诉我这种数据类型有用的情况.

PS:C似乎不支持如here所见的数据类型.

#include <iostream>
using namespace std;

int main() {
    // your code goes here
    _Bool b = false;
    if(b == 0)
        printf("FALSE");
    else
        printf("TRUE");
    return 0;
}

解决方法

It says that C99 added a variable _Bool

不,C99添加了一个名为_Bool的内置类型,其值可以是0或1.标题,< stdbool.h>定义宏,其中bool扩展为_Bool,false扩展为0,true为1.

另一方面,C具有称为bool的内置类型,其可以具有true和false的值.为了兼容性,C 11指定stdbool.h应该存在,但是为空. (有些C编译器提供C的bool作为C99之前的扩展.)

添加C99的目的是提供与C相同的功能,但是这种方式不会使旧的C89代码无效(其中普通bool可用作名称).在我看来,他们提出的宏解决方案并不理想,事实上,看到使用布尔类型的C代码仍然很少见,而它们在C中是普遍存在的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读