在C练习中使用char作为bool?

Del*_*ani 11 c boolean

使用是否有任何缺点

typedef char bool;
enum boolean { false, true };
Run Code Online (Sandbox Code Playgroud)

在C中提供语义布尔类型?

GMa*_*ckG 15

在C99,你应该使用stdbool.h,定义bool,truefalse.

否则你有什么好.仅使用枚举可能会稍微简单一点,但如果你真的想节省空间,你所拥有的工作.

  • 可能他的平台有`sizeof(any_enum_t)== sizeof(int)`. (3认同)

Dig*_*oss 6

简短的回答是:没关系.如果你需要制作大型阵列,这是特别好的,虽然我很想使用C99内置1.

既然你问"有什么缺点......"我想我可以说有重要的机器实际上没有字符加载指令.(Cray和初始的DEC Alpha会浮现在脑海中.)未来的机器可能会再次突然变得极小.

这将永远是快速加载标准整型.

这将可能永远是快速加载单个字符.


1.见C99 6.2.5.有一个内置类型_Bool.然后,如果你包括<stdbool.h>(参见C99 7.16),你会得到一个别名,命名越优雅bool,并为true和定义false.如果你使用它会与你的typedef发生冲突,但我相信这很容易解决.


Jam*_*lis 5

不利的一面typedef char bool;是,如果您使用C99实现进行编译并碰巧包含了<stdbool.h>,则最终将显示为typedef char _Bool;,这是错误的。另外,如果您曾经尝试将代码编译为C ++,则会遇到问题(不一定是问题,但可能是)。

<stdbool.h>如果您的实现提供了一个,或者使用不同的名称(例如),则可能会更好BOOL