使用是否有任何缺点
typedef char bool;
enum boolean { false, true };
Run Code Online (Sandbox Code Playgroud)
在C中提供语义布尔类型?
GMa*_*ckG 15
在C99,你应该使用stdbool.h
,定义bool
,true
和false
.
否则你有什么好.仅使用枚举可能会稍微简单一点,但如果你真的想节省空间,你所拥有的工作.
简短的回答是:没关系.如果你需要制作大型阵列,这是特别好的,虽然我很想使用C99内置1.
既然你问"有什么缺点......"我想我可以说有重要的机器实际上没有字符加载指令.(Cray和初始的DEC Alpha会浮现在脑海中.)未来的机器可能会再次突然变得极小.
这将永远是快速加载标准整型.
这将可能永远是快速加载单个字符.
1.见C99 6.2.5.有一个内置类型_Bool
.然后,如果你包括<stdbool.h>
(参见C99 7.16),你会得到一个别名,命名越优雅bool
,并为true
和定义false
.如果你使用它会与你的typedef发生冲突,但我相信这很容易解决.
不利的一面typedef char bool;
是,如果您使用C99实现进行编译并碰巧包含了<stdbool.h>
,则最终将显示为typedef char _Bool;
,这是错误的。另外,如果您曾经尝试将代码编译为C ++,则会遇到问题(不一定是问题,但可能是)。
<stdbool.h>
如果您的实现提供了一个,或者使用不同的名称(例如),则可能会更好BOOL
。