各种变量的比较编程规范(摘自高质量C++/C编程指南)
来源:互联网 发布:细思极恐的故事知乎 编辑:程序博客网 时间:2024/05/21 00:17
4.3.1 布尔变量与零值比较
l 【规则4-3-1】不可将布尔变量直接与TRUE、FALSE或者1、0进行比较。
根据布尔类型的语义,零值为“假”(记为FALSE),任何非零值都是“真”(记为TRUE)。TRUE的值究竟是什么并没有统一的标准。例如Visual C++ 将TRUE定义为1,而Visual Basic则将TRUE定义为-1。
假设布尔变量名字为flag,它与零值比较的标准if语句如下:
if (flag) // 表示flag为真
if (!flag) // 表示flag为假
其它的用法都属于不良风格,例如:
if (flag == TRUE)
if (flag == 1 )
if (flag == FALSE)
if (flag == 0)
4.3.2 整型变量与零值比较
l 【规则4-3-2】应当将整型变量用“==”或“!=”直接与0比较。
假设整型变量的名字为value,它与零值比较的标准if语句如下:
if (value == 0)
if (value != 0)
不可模仿布尔变量的风格而写成
if (value) // 会让人误解 value是布尔变量
if (!value)
4.3.3 浮点变量与零值比较
l 【规则4-3-3】不可将浮点变量用“==”或“!=”与任何数字比较。
千万要留意,无论是float还是double类型的变量,都有精度限制。所以一定要避免将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”形式。
假设浮点变量的名字为x,应当将
if (x == 0.0) // 隐含错误的比较
转化为
if ((x>=-EPSINON) && (x<=EPSINON))
其中EPSINON是允许的误差(即精度)。
4.3.4 指针变量与零值比较
l 【规则4-3-4】应当将指针变量用“==”或“!=”与NULL比较。
指针变量的零值是“空”(记为NULL)。尽管NULL的值与0相同,但是两者意义不同。假设指针变量的名字为p,它与零值比较的标准if语句如下:
if (p == NULL) // p与NULL显式比较,强调p是指针变量
if (p != NULL)
不要写成
if (p == 0) // 容易让人误解p是整型变量
if (p != 0)
或者
if (p) // 容易让人误解p是布尔变量
if (!p)
- 各种变量的比较编程规范(摘自高质量C++/C编程指南)
- 《高质量C++/C编程指南》代码规范笔记
- 关于ASSERT(断言)使用的规则--摘自《高质量C/C++编程指南》(转载)
- 关于ASSERT(断言)使用的规则--摘自《高质量C/C++编程指南》
- 关于ASSERT(断言)使用的规则--摘自《高质量C/C++编程指南》
- 关于ASSERT(断言)使用的规则--摘自《高质量C/C++编程指南》
- 关于ASSERT(断言)使用的规则--摘自《高质量C/C++编程指南》
- 关于ASSERT(断言)使用的规则--摘自《高质量C/C++编程指南》
- 关于ASSERT(断言)使用的规则--摘自《高质量C/C++编程指南》
- 高质量C++/C 编程指南 阅读笔记(一)编程规范
- 高质量C编程指南
- 高质量C++/C编程指南(参考文献)
- 高质量C++/C编程指南
- 高质量C++/C编程指南
- 高质量C++/C 编程指南
- 读《高质量C++/C编程指南》
- 高质量C++/C编程指南
- 高质量C++/C编程指南
- (转)放弃GOOGLE,放弃BAIDU的垃圾信息吧!!!写ESSAY跟RESEACH PAPER一定用到的17个网站~必收藏文章~!
- RHCE033 Lecture14 $
- 简单工厂模式
- 散度 div 的物理解释
- Ubuntu 安装JDK
- 各种变量的比较编程规范(摘自高质量C++/C编程指南)
- 关于域控的经验分享
- C#开发的组态软件
- Tomcat服务器--域名绑定、虚拟目录
- typeid详解
- 同时安装oracle9 i,10 g 控制台 cmd,exp指令使用数据库版本切换,plsql数据库版本切换,
- arm调试(东风主控板)
- 12月27日英语学习
- log4j使用方法