4.3.1 布尔变量与零值比较
z 【规则4-3-1】不可将布尔变量直接与TRUE、FALSE 或者1、0 进行比较。
根据布尔类型的语义,零值为“假”(记为FALSE),任何非零值都是“真”(记为
TRUE)。TRUE 的值究竟是什么并没有统一的标准。例如Visual C++ 将TRUE 定义为
1,而Visual Basic 则将TRUE 定义为-1。
假设布尔变量名字为flag,它与零值比较的标准if 语句如下:
if (flag) // 表示flag 为真
高质量C++/C 编程指南,v 1.0
2001 Page 28 of 101
if (!flag) // 表示flag 为假
其它的用法都属于不良风格,例如:
if (flag == TRUE)
if (flag == 1 )
if (flag == FALSE)
if (flag == 0)
4.3.2 整型变量与零值比较
z 【规则4-3-2】应当将整型变量用“==”或“!=”直接与0 比较。
假设整型变量的名字为value,它与零值比较的标准if 语句如下:
if (value == 0)
if (value != 0)
不可模仿布尔变量的风格而写成
if (value) // 会让人误解 value 是布尔变量
if (!value)
4.3.3 浮点变量与零值比较
z 【规则4-3-3】不可将浮点变量用“==”或“!=”与任何数字比较。
千万要留意,无论是float 还是double 类型的变量,都有精度限制。所以一定要
避免将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”形式。
假设浮点变量的名字为x,应当将
if (x == 0.0) // 隐含错误的比较
转化为
if ((x>=-EPSINON) && (x<=EPSINON))
其中EPSINON 是允许的误差(即精度)。
4.3.4 指针变量与零值比较
z 【规则4-3-4】应当将指针变量用“==”或“!=”与NULL 比较。
指针变量的零值是“空”(记为NULL)。尽管NULL 的值与0 相同,但是两者意义不
同。假设指针变量的名字为p,它与零值比较的标准if 语句如下:
if (p == NULL) // p 与NULL 显式比较,强调p 是指针变量
if (p != NULL)
不要写成
if (p == 0) // 容易让人误解p 是整型变量
if (p != 0)
或者
if (p) // 容易让人误解p 是布尔变量
if (!p)
分享到:
相关推荐
例如,在C++中,如果我们要比较两个整数x和y并交换它们的值,可以使用如下的单分支if语句: ```cpp if (x ) { t = x; x = y; y = t; } ``` 这里,如果x小于y,那么变量t将存储x的值,x将获得y的值,最后y将得到t...
输入年份,输出是否是闰年
【C++学习日记--分支结构(if语句)】 在编程语言中,if语句用于实现条件控制,它允许程序根据特定条件的真假执行不同路径的代码。在C++中,if语句的基本形式如下: ```cpp if (condition) { // 当条件condition...
根据提供的文件信息,我们可以深入探讨C++中的选择结构程序设计,特别是if语句的不同形式及其应用。 ### C++中的选择结构程序设计 选择结构是一种基于条件判断来决定程序执行路径的编程逻辑。在C++中,选择结构...
在C++编程语言中,控制流是程序执行的关键部分,其中IF语句和逻辑运算符起着至关重要的作用。本章将深入探讨这些概念,并通过一系列的swf教程文件进行详细讲解。 首先,我们从基础开始,理解"什么是语句"(01什么是...
### C++ if语句、决策语句块和变量作用域详解 #### 一、引言 在计算机编程中,能够根据不同的条件改变程序的行为是非常重要的。C++作为一种强大的编程语言,提供了多种方式来实现这样的功能。本文将详细介绍C++中的...
* 语法分析:使用if-else语句和switch-case语句来实现语法分析,组合出语法正确的语句。 * 结果输出:输出词法分析和语法分析的结果,包括头文件、类名、函数名等信息。 本文提供了一个基本的C++代码解析器的实现,...
- **题目示例**:“为了避免嵌套的if语句的二义性,C++规定else同(B)”。 - 解析:C++中,`else`总是与最近的`if`语句关联。这有助于避免二义性问题,确保每个`else`都能明确对应到一个`if`。 8. **循环控制语句*...
作者使用了 if-else 语句和 switch-case 语句来实现词法分析,证明了词法分析的基本原理。 二、语法分析 语法分析是编译过程的第二阶段,负责对词法分析器生成的 token 序列进行语法分析,以便检查源代码是否符合...
该程序使用了基本的if-else语句和switch-case语句来实现词法分析和语法分析的功能。 在词法分析阶段,程序将源代码分割成一个个token,然后对每个token进行处理。例如,对于标识符,程序将其转换为一个词法单元,而...
本章节主要介绍了 C++ 中的控制结构,包括 if 语句、switch 语句、while 语句、for 语句和 do-while 语句等。学习了如何使用这些语句来控制程序的流程和逻辑。 本资源旨在帮助初学者快速掌握 C++ 的基础知识,提供...
本节我们将深入探讨如何使用if语句来计算整数的绝对值,尤其在不依赖内置库函数的情况下。 首先,让我们理解if语句的基本结构。if语句是条件控制语句,它允许程序根据特定条件执行不同的代码块。其基本形式如下: ...
C++的控制结构如条件语句(if-else)和循环语句(for、while、do-while)为程序提供了必要的逻辑分支和迭代执行的能力。 函数在C++中是组织代码和实现功能封装的基本单位。函数的定义和声明涉及返回类型、函数名、...
平时我们在说“如果……那么……”的时候,还经常和“否则……”连用。...虽然这样也能够把意思表达清楚,但是语句显得冗长,要是条件再多一点则更是杂乱。可见,在程序设计中,如果没有“否则……”语句将会多么麻烦。
if语句是C++/C语言中最简单、最常用的语句,然而很多程序员用隐含错误的方式写if语句。本节以“与零值比较”为例,展开讨论。 4.3.1 布尔变量与零值比较 l 【规则4-3-1】不可将布尔变量直接与TRUE、FALSE或者1...
《编译原理课程设计——基于IF-THEN条件语句的翻译程序设计》 在计算机科学领域,编译原理是理解程序如何转化为机器可执行代码的关键学科。本项目以武汉理工大学的课程设计为例,探讨了如何使用递归下降法来设计一...
《C++编程语言》第六章:“表达式与语句”深入解析 在深入探讨C++的表达式与语句之前,我们先回顾一下这门语言的重要性。C++是一种静态类型的、编译式的、通用的、面向对象的编程语言,由贝尔实验室的Bjarne ...
内容涵盖了switch语句的定义、基本语法、使用场景、优点、注意事项、与if语句的区别、实战应用、多重分支、范围检查、字符串处理、默认情况、性能考虑、灵活性、多态性、安全性、调试、性能优化和最佳实践等高级知识...
在PL/0的原始版本中,仅支持简单的if语句,但在此扩充中,我们增加了else部分,使得可以提供备选的代码路径。例如: ```pl0 if condition then statement1 else statement2 ``` 这里,`condition`是需要评估的...