Char或Int表示C中的布尔值?

时间:2012-03-01 17:37:46

标签: c

我发现没有原生的bool类型。人们使用intchar - 虽然似乎int可能比char更常用?这是真的吗?

我的第一个冲动是使用char,因为它是一个较小的数据类型,但有些东西我错过了吗? int对于布尔值是否更好,如果是 - 为什么?

5 个答案:

答案 0 :(得分:13)

C99中有_Boolstdbool.h包含bool

如果你没有它(一个相当现代的编译器),使用int,它通常是最快的类型。使用char节省的内存可能微不足道。

答案 1 :(得分:3)

如果你正在使用一个相当现代的C编译器,那么你只需要:

#include <stdbool.h>

这通常有一个宏,例如:

#define bool _Bool

可让您在需要_Bool的任何地方使用C99的内置bool类型。

答案 2 :(得分:2)

有一个名为_Bool的本机类型(从C99开始)。在<stdbool.h>中,还有一个#define可以提供bool作为别名(如果需要)(#definetrue也有false个})。

答案 3 :(得分:1)

实际上没有真正的区别,因为char在使用时总是被提升为int(检查this)。我从未见过用作bool的char,所以我会去使用int。

答案 4 :(得分:0)

根据 ISO-9899 关系的结果,逻辑和相等运算符的类型为int。来自true的{​​{1}}和false也是整数。如果你想节省内存 - 使用位字段。