9.1 C语言中布尔值的候选类型是什么?

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

C 语言没有提供标准的布尔类型, 部分因为选一个这样的类型涉及最好由程序员决定的空间/时间折衷。

(使用int 可能更快, 而使用char 可能更节省数据空间。然而, 如果需要和int 反复转换, 那么小类型也可能生成更大或更慢的代码。)

使用#define 还是枚举常数定义true/false 可以随便, 无关大雅(参见问题2.16 和17.8)。

使用以下任何一种形式

   #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)

但这样于事无益, 参见下边的问题9.2, 5.9 和10.1。

永不止步步 发表于01-18 10:28 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67417个|学分:363791个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号