C 语言中布尔值的候选类型是什么?为什么它不是一个标准类型?

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)
但这样于事无益。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值