有朋友问了一个问题,为什么没有Boolean
C 编程语言中的数据类型。我做了一些搜索和阅读。我在堆栈溢出中得到了一些问题和答案,
- 所有数据类型都应该是可寻址的,但位不能寻址。
- 主流CPU硬件层面的基本数据结构是字节。对这些 CPU 中的位进行操作需要额外的处理。
我们可以这样使用 bool
#define bool int
#define TRUE 1
#define FALSE 0
or use typedef
s.
但我的问题是:为什么它没有在 C 中作为数据类型实现,即使经过了这么多年。实现单字节数据类型来存储布尔值而不是使用是否有意义int
or short
明确地。
这不再是真的了。内置布尔类型,又名_Bool
可用时间为C99。如果你包括stdbool.h,它的别名bool
也为您服务。
_Bool
是真正的本机类型,而不是别名int
。至于它的大小,标准只规定它足够大来存储0
and 1
。但实际上,大多数编译器确实会调整其大小1
:
例如,这个ideone 上的代码片段输出1
:
#include <stdio.h>
#include <stdbool.h>
int main(void) {
bool b = true;
printf("size of b: %zu\n", sizeof(b));
return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)