发布时间 : 星期五 文章2010 - C++编码规范更新完毕开始阅读a7c8c5fdf705cc175527091e
if ((a | b) && (a & c))
5.2 复合表达式
?
不要编写太复杂的复合表达式。
例如:
i = a >= b && c < d && c + f <= g + h ; // 复合表达式过于复杂
?
不要有多用途的复合表达式。
例如:
d = (a = b + c) + r ;
该表达式既求a值又求d值。应该拆分为两个独立的语句:
a = b + c; d = a + r; ?
不要把程序中的复合表达式与“真正的数学表达式”混淆。
例如:
if (a < b < c) // a < b < c是数学表达式而不是程序表达式
并不表示
if ((a
5.3 if 语句
?
不可将布尔变量直接与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) ?
应当将整型变量用\或\!=\直接与0比较。
假设整型变量的名字为value,它与零值比较的标准if语句如下:
if (value == 0) if (value != 0)
不可模仿布尔变量的风格而写成
if (value) // 会让人误解 value是布尔变量
if (!value) ?
不可将浮点变量用\或\!=\与任何数字比较。
千万要留意,无论是float还是double类型的变量,都有精度限制。所以一定要避免将浮点变量用\或\!=\与数字比较,应该设法转化成\或\形式。
假设浮点变量的名字为x,应当将 if (x == 0.0) // 隐含错误的比较 转化为
if ((x>=-EPSINON) && (x<=EPSINON)) 其中EPSINON是允许的误差(即精度)。 ?
应当将指针变量用\或\!=\与NULL比较。
指针变量的零值是“空”(记为NULL)。尽管NULL的值与0相同,但是两者意义不同。假