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

本文探讨了C语言中布尔值的实现方式,包括使用#define或enum定义true和false的方法,并讨论了不同类型的优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 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)

但这样于事无益。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值