高质量C++/C编程指南-第4章-表达式和基本语句
作者 佚名技术
来源 程序设计
浏览
发布时间 2012-06-30
(a & c)) 4.2 复合表达式 如 a = b = c = 0这样的表达式称为复合表达式。允许复合表达式存在的理由是:(1)书写简洁;(2)可以提高编译效率。但要防止滥用复合表达式。 l 【规则4-2-1】不要编写太复杂的复合表达式。 例如: i = a >= b && c < d && c + f <= g + h ; // 复合表达式过于复杂 l 【规则4-2-2】不要有多用途的复合表达式。 例如: d = (a = b + c) + r ; 该表达式既求a值又求d值。应该拆分为两个独立的语句: a = b + c; d = a + r; l 【规则4-2-3】不要把程序中的复合表达式与“真正的数学表达式”混淆。 例如: if (a < b < c) // a < b < c是数学表达式而不是程序表达式 并不表示 if ((a<b) && (b<c)) 而是成了令人费解的 if ( (a<b)<c ) 4.3 if 语句 if语句是C++/C语言中最简单、最常用的语句,然而很多程序员用隐含错误的方式写if语句。本节以“与零值比较”为例,展开讨论。 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比较。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于高质量C++/C编程指南-第4章-表达式和基本语句的所有评论