l
根据布尔类型的语义,零值为“假”(记为FALSE),任何非零值都是“真”(记为TRUE)。TRUE的值究竟是什么并没有统一的标准。例如Visual C++ 将TRUE定义为1,而Visual Basic则将TRUE定义为-1。
假设布尔变量名字为flag,它与零值比较的标准if语句如下:
if (flag)
if (!flag)
其它的用法都属于不良风格,例如:
整型变量与零值比较
l
不可模仿布尔变量的风格而写成
浮点变量与零值比较
l
if (x == 0.0)
转化为
if ((x>=-EPSINON) && (x<=EPSINON))
其中EPSINON是允许的误差(即精度)。
指针变量与零值比较
l
不要写成
if (p)
对if语句的补充说明
有时候我们可能会看到 if (NULL == p) 这样古怪的格式。不是程序写错了,是程序员为了防止将 if (p == NULL) 误写成 if (p = NULL),而有意把p和NULL颠倒。编译器认为 if (p = NULL) 是合法的,但是会指出 if (NULL = p)是错误的,因为NULL不能被赋值。
程序中有时会遇到if/else/return的组合,应该将如下不良风格的程序
改写为
return y;
}
或者改写成更加简练的
return (condition ? x : y);