2010 - C++编码规范 联系客服

发布时间 : 星期五 文章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相同,但是两者意义不同。假