《C和C++程序员面试秘笈》——1.5 选择编程风格良好的条件比较语句

本节书摘来自异步社区出版社《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类型的变量,都有精度限制。所以一定要避免将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”形式。
上一篇:函数计算助力高德地图平稳支撑亿级流量高峰


下一篇:Unity3D中的线性插值Lerp()函数解析