说一下这个C语言 | 每日基础(46)

古代的剑客们与

对手相逢时,无

论对手多么强大,

明知不敌,也要亮出自己的剑!

读者:C 语言中布尔值的候选类型是什么?为什么它不是一个标准类型?我应该用 #define 或 enum 定义 true 和 false 值吗?

阿一:C 语言没有提供标准的布尔类型, 部分因为选一个这样的类型涉及最好由程 序员决定的空间/时间折衷。(使用 int 可能更快, 而使用 char 可能更节省数据空 间。然而, 如果需要和 int 反复转换, 那么小类型也可能生成更大或更慢的代码。) 使用 #define 还是枚举常数定义 true/false 可以随便, 无关大雅。使用以下任何一种形式

#define TRUE 1 #define YES 1

#define FALSE 0 #define NO 0

enum bool {false, true}; enum bool {no, yes};

或直接使用 1 和 0 , 只要在同一程序或项目中一致即可。如果你的调试器在 查看变量的时候能够显示枚举常量的名字, 可能使用枚举更好。

有些人更喜欢这样的定义

#define TRUE (1==1)

#define FALSE (!TRUE)

或者定义这样的 “辅助” 宏 #define Istrue(e) ((e) != 0) 但这样于事无益。

有时候,正是那些意想不到之人,成就了无人能成之事。

——图灵

正文完