快速业务通道

高质量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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号