《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类型的变量,都有精度限制。所以一定要避免将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”形式。
相关文章
|
1月前
|
安全 JavaScript 前端开发
C/C++面试题:如何理解多态?
C/C++面试题:如何理解多态?
24 0
|
1月前
|
自然语言处理 算法 Java
C/C++ 程序员编程规范之注释
C/C++ 程序员编程规范之注释
41 1
|
29天前
|
编译器 C++ Python
【C/C++ 泡沫精选面试题02】深拷贝和浅拷贝之间的区别?
【C/C++ 泡沫精选面试题02】深拷贝和浅拷贝之间的区别?
32 1
|
2月前
|
C++
C/C++工程师面试题(指针篇)
C/C++工程师面试题(指针篇)
49 0
|
2月前
|
网络协议 网络性能优化 C++
C/C++工程师面试题(网络编程篇)
C/C++工程师面试题(网络编程篇)
40 0
|
3月前
|
存储 算法 程序员
【Leetcode 程序员面试金典 01.01】判定字符是否唯一 —— 位运算|哈希表
可以使用哈希表或位运算来解决此问题:由题可知s[i]仅包含小写字母,int[26]即能表示字符的出现次数;
|
24天前
|
敏捷开发 安全 API
C/C++ 工程师面试:如何精彩展示你的项目经验并获得高分
C/C++ 工程师面试:如何精彩展示你的项目经验并获得高分
71 0
|
29天前
|
消息中间件 存储 算法
【C/C++ 泡沫精选面试题04】在实际项目中,多进程和多线程如何选择?
【C/C++ 泡沫精选面试题04】在实际项目中,多进程和多线程如何选择?
43 1
|
29天前
|
编解码 缓存 安全
【C/C++ 泡沫精选面试题03】谈谈C/C++ 智能指针?
【C/C++ 泡沫精选面试题03】谈谈C/C++ 智能指针?
31 1
|
29天前
|
缓存 算法 编译器
【C/C++ 泡沫精选面试题01】提高c++性能,你用过哪些方式去提升?
【C/C++ 泡沫精选面试题01】提高c++性能,你用过哪些方式去提升?
35 1