本节书摘来自异步社区出版社《C和C++程序员面试秘笈》一书中的第1章,第1.1节,作者: 董山海,更多章节内容可以访问云栖社区“异步社区”公众号查看。
1.5 选择编程风格良好的条件比较语句
C和C++程序员面试秘笈
考点: 良好的编程风格
出现频率:
A.假设布尔变量名字为flag,它与零值比较的标准if语句如下。
第一种:
if (flag == TRUE)
if (flag == FALSE)```
第二种:
if (flag)
if (!flag)`
B.假设整型变量的名字为value,它与零值比较的标准if语句如下。
第一种:
if (value == 0)
if (value != 0)```
第二种:
if (value)
if (!value)`
C.假设浮点变量的名字为x,它与0.0的比较如下。
第一种:
if (x == 0.0)
if (x != 0.0)
第二种:
if ((x >= -EPSINON) && (X <= EPSINON))
if ((x < -EPSINON) || (X > EPSINON))```
其中,EPSINON是允许的误差(精度)。
D.指针变量p与0的比较如下。
第一种:
if (p == NULL)
if (p != NULL)`
第二种:
if (p == 0)
if (p != 0)```
【解析】
A的第二种风格较良好。根据布尔类型的语义,零值为“假”(记为FALSE),任何非零值都是“真”(记为TRUE)。TRUE的值究竟是什么并没有统一的标准。例如Visual C++将TRUE定义为1,而Visual Basic则将TRUE定义为-1。因此不可将布尔变量直接与TRUE、FALSE进行比较。
B的第一种风格较良好,第二种风格会让人误解value是布尔变量,应该将整型变量用“==”或“!=”直接与0比较。
C的第二种风格较良好。注意:无论是float还是double类型的变量,都有精度限制。所以一定要避免将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”形式。