需要C99中的_Bool吗?

Cool_Coder

我正在读一本有关C的书。它说C99添加了一个数据类型_Bool。它基本上是一个整数,但只存储0或1。现在我不明白为什么需要这种数据类型。我们已经有了布尔,它隐式转换为int,反之亦然。所以有人可以告诉我这种数据类型有用的情况。

PS:C ++似乎不支持这样的数据类型所看到这里

#include <iostream>
using namespace std;

int main() {
    // your code goes here
    _Bool b = false;
    if(b == 0)
        printf("FALSE");
    else
        printf("TRUE");
    return 0;
}
特里斯坦·布林德尔

它说C99添加了一个变量_Bool

不,C99添加了一个称为的内置类型_Bool,其值可以为01标头<stdbool.h>定义了宏,这些宏在其中bool扩展为_Boolfalseto0trueto 1

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

新增C99的目的是提供与C ++相同的功能,但不会使旧的C89代码无效(此处可以使用纯文本bool作为名称)。在我看来,他们提出的宏解决方案并不理想,并且确实很少见使用布尔类型的C代码,而在C ++中却普遍使用它们。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

需要C99中的_Bool吗?

来自分类Dev

c99中不赞成使用getresuid吗?

来自分类Dev

仅使用ISO 646,三字母组合体就需要在C99中编写换行符吗?

来自分类Dev

C99中参数列表为空的函数与C ++ 98不兼容吗?

来自分类Dev

C99中的声明符语义

来自分类Dev

C99中的内联,静态,外部

来自分类Dev

在C99中长久

来自分类Dev

GCC可以警告我有关修改C99中的const字段的问题吗?

来自分类Dev

w CLion和C99 Standard吗?

来自分类Dev

C99中带有空参数列表的函数与C ++ 98不兼容吗?

来自分类Dev

指定的初始化程序可以合法地引用它在C99中初始化的变量吗?

来自分类Dev

C99预处理器中的static_if

来自分类Dev

free函数的隐式声明在c99中无效

来自分类常见问题

c99中的func()vs func(void)

来自分类Dev

C99中“算术运算”的定义是什么?

来自分类Dev

函数“ DLog”的隐式声明在C99中无效

来自分类Dev

在C99中获取右值的地址

来自分类Dev

在C99中的结构内强制枚举值的宽度

来自分类Dev

在C99中,布尔类型可以返回什么?

来自分类Dev

C99 GDB中的可变长度数组

来自分类Dev

c99中的gets()函数是否可以替代?

来自分类Dev

free函数的隐式声明在c99中无效

来自分类Dev

在C99中的结构内强制枚举值的宽度

来自分类Dev

C99中的固定大小的指针类型

来自分类Dev

在C99中的宏中使用对与错

来自分类Dev

需要将C ++模板转换为C99代码

来自分类Dev

找不到带有-std = c99的math.h常量吗?

来自分类Dev

在功能参数上对C99的数组大小“保证”功能有实际好处吗?

来自分类Dev

C99相当于MATLAB的“过滤器”吗?