《C和指针》笔记20:布尔值的注意事项

比较布尔值的时候下面的代码看起来是一样的。

c 复制代码
#define FALSE 0
#define TRUE 1
if(flag == FALSE)
if(!f1ag)
...
if(flag == TRUE)
if(flag)
...

但是,如果flag设置为任意的整型值,那么第2对语句就不是等价的。只有当flag确实是TRUE或FALSE,或者是关系表达式或逻辑表达式的结果值时,两者才是等价的。

解决所有这些问题的方法是避免混合使用整型值和布尔值。如果一个变量包含了一个任意的整型值,应该显式地对它进行测试:

c 复制代码
//下面的语句暗示是一个整型值的比较
if( value != 0 ) ...

不要使用简写法来测试变量是零还是非零,因为这类形式错误地暗示该变量在本质上是布尔型的。

如果一个变量用于表示布尔值,应该始终把它设置为0或者1,例如:

c 复制代码
positive_cash_flow = cash_balance >= 0;

不要通过把它与任何特定的值进行比较来测试这个变量**(布尔型)**是否为真值,哪怕是与TRUE或FALSE进行比较。相反,应该像下面这样测试变量的值:

c 复制代码
//下面的语句暗示是一个布尔型的比较
if( positive_cash_flow ) ...
if( !positive_cash_flow ) ...

使用布尔型的变量应该选择使用描述性的语言描述,比如:如果现金流量为正,那么 ...

参考

  1. 《C和指针》
相关推荐
2601_949146535 小时前
C语言语音通知API示例代码:基于标准C的语音接口开发与底层调用实践
c语言·开发语言
学嵌入式的小杨同学5 小时前
从零打造 Linux 终端 MP3 播放器!用 C 语言实现音乐自由
linux·c语言·开发语言·前端·vscode·ci/cd·vim
Aaron15886 小时前
基于RFSOC的数字射频存储技术应用分析
c语言·人工智能·驱动开发·算法·fpga开发·硬件工程·信号处理
爱编码的小八嘎7 小时前
C语言对话-21.模板特化,缺省参数和其他一些有趣的事情
c语言
yueyuexiaokeai18 小时前
linux kernel常用函数整理
linux·c语言
想放学的刺客9 小时前
单片机嵌入式试题(第29期)嵌入式系统的电源完整性设计与去耦电容选型。抗干扰设计与EMC合规性
c语言·stm32·嵌入式硬件·物联网·51单片机
集芯微电科技有限公司12 小时前
15V/2A同步开关型降压单节/双节锂电池充电管理IC支持输入适配器 DPM 功能
c语言·开发语言·stm32·单片机·嵌入式硬件·电脑
zz345729811314 小时前
c语言基础概念9
c语言·开发语言
v_for_van15 小时前
力扣刷题记录4(无算法背景,纯C语言)
c语言·算法·leetcode
启友玩AI16 小时前
方言守护者:基于启英泰伦CI-F162GS02J芯片的“能听懂乡音”的智能夜灯DIY全攻略
c语言·人工智能·嵌入式硬件·ai·语音识别·pcb工艺