gpt4 book ai didi

c - 为什么 boolean 数据类型没有在 C 中实现

转载 作者:太空狗 更新时间:2023-10-29 16:51:39 24 4
gpt4 key购买 nike

有个 friend 问了一个问题,为什么C语言中没有Boolean数据类型。我做了一些搜索和阅读。我在堆栈溢出中得到的问题和答案很少,

  1. 所有的数据类型都应该是可寻址的,只有一点是不可寻址的。
  2. 主流CPU在硬件层面的基本数据结构是一个字节。对这些 CPU 中的位进行操作需要额外的处理。

我们可以这样使用bool

#define bool int
#define TRUE 1
#define FALSE 0

或使用typedef

但我的问题是:为什么它没有在 C 中作为一种数据类型实现,即使经过了这么多年。实现单字节数据类型来存储 boolean 值而不是显式使用 intshort 没有意义。

最佳答案

不再是这样了。内置的 boolean 类型,又名 _BoolC99 起可用。 .如果包括 stdbool.h ,它的别名 bool 也为你准备好了。


_Bool 是真正的原生类型,而不是 int 的别名。至于它的大小,标准只规定它足够大以存储01。但在实践中,大多数编译器确实将其大小设置为 1:

例如,这个code snippet on ideone输出1:

#include <stdio.h>
#include <stdbool.h>
int main(void) {
bool b = true;
printf("size of b: %zu\n", sizeof(b));
return 0;
}

关于c - 为什么 boolean 数据类型没有在 C 中实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25974794/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com