我发现C语言中没有本地的bool
类型。人们通常使用int
或char
,尽管似乎int
比char
更常用?这是真的吗?
我的第一反应是使用char
作为它是一个较小的数据类型,但我是否错过了什么?int
对于布尔值更好,如果是这样-为什么呢?
我发现C语言中没有本地的bool
类型。人们通常使用int
或char
,尽管似乎int
比char
更常用?这是真的吗?
我的第一反应是使用char
作为它是一个较小的数据类型,但我是否错过了什么?int
对于布尔值更好,如果是这样-为什么呢?
char
比 int
更快呢?我的意思是,一个更大的数据类型处理起来更快吗? - thomthombool
- 我只是想知道如果你不使用char
和int
,它们之间的使用差异。只是为了更好地理解它们的工作原理。但是如果我们包括bool
,那么它与int
的性能如何?它是一个伪装的int,还是一个真正的新数据类型? - thomthomint
比 char
更快 - 我有些混淆了。那个链接的答案非常有趣和启发性。 - thomthom如果您使用的是比较现代的C编译器,则只需要:
#include <stdbool.h>
#define bool _Bool
这使得你可以在需要 bool
的地方使用 C99 内置的 _Bool
类型。
在 C99 中引入了一种名为 _Bool
的本地类型。在 <stdbool.h>
中,还有一个 #define
用于提供别名 bool
,如果您需要的话(还有用于 true
和 false
的 #define
)。
实际上,当使用char时,它总是被提升为int,因此没有真正的区别(请参见this)。虽然我从未见过char用作bool,但我会选择使用int。
int
更快是因为 char
被转换成了 int
? - thomthom
if
语句中,char
类型会自动转换为int
类型。这只是一种空间优化方式:通常情况下,char
类型比int
类型更小。 - Etienne de Martel