《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类型的变量,都有精度限制。所以一定要避免将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”形式。
相关文章
|
11月前
|
缓存 安全 编译器
C++面试周刊(3):面试不慌,这样回答指针与引用,青铜秒变王者
《C++面试冲刺周刊》第三期聚焦指针与引用的区别,从青铜到王者级别面试回答解析,助你21天系统备战,直击高频考点,提升实战能力,轻松应对大厂C++面试。
929 132
C++面试周刊(3):面试不慌,这样回答指针与引用,青铜秒变王者
|
存储 网络协议 编译器
【干货总结】Linux C/C++面试知识点
Linux C/C++基础与进阶知识点,不仅用于面试,平时开发也用得上!
1466 131
|
IDE Java 程序员
C++ 程序员的 Java 指南
一个 C++ 程序员自己总结的 Java 学习中应该注意的点。
222 5
|
算法 程序员 Go
PHP 程序员学会了 Go 语言就能唬住面试官吗?
【9月更文挑战第8天】学会Go语言可提升PHP程序员的面试印象,但不足以 solely “唬住” 面试官。学习新语言能展现学习能力、拓宽技术视野,并增加就业机会。然而,实际项目经验、深入理解语言特性和综合能力更为关键。全面展示这些方面才能真正提升面试成功率。
276 10
|
JavaScript 前端开发 小程序
CoderGuide 程序员前后端面试题库,打造全网最高质量题库
CoderGuide涵盖范围包括且不限于:前端面试题(Vue,React,JS,HTTP,HTML,CSS面试题等),后端面试题(Java,Python,Golang,PHP,Linux,Mysql面试题等),以及算法面试题,大厂面试题,高频面试题,校招面试题等,你想要的,这里都有!
472 2
|
前端开发 应用服务中间件 程序员
老程序员分享:Nginx相关面试题
老程序员分享:Nginx相关面试题
326 2
|
SQL JavaScript Java
java程序员面试题大全含答案(2018--2019)
java程序员面试题大全含答案(2018--2019)
|
算法 C++ 容器
Essential C++ 第3章 泛型编程风格
Essential C++ 第3章 泛型编程风格
136 1
|
编译器 C++
Essential C++ 第2章 面向过程的编程风格
Essential C++ 第2章 面向过程的编程风格
149 1
|
域名解析 网络协议 程序员
程序员必知:【转】adns解析库——域名解析实例(C++、linux)
程序员必知:【转】adns解析库——域名解析实例(C++、linux)
343 0