千家信息网

C++为什么不要在条件语句中增加多余的==或!=

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇内容主要讲解"C++为什么不要在条件语句中增加多余的==或!=",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C++为什么不要在条件语句中增加多余的==
千家信息网最后更新 2026年11月02日C++为什么不要在条件语句中增加多余的==或!=

本篇内容主要讲解"C++为什么不要在条件语句中增加多余的==或!=",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C++为什么不要在条件语句中增加多余的==或!="吧!

ES.87:不要在条件语句中增加多余的==或!=

Reason(原因)

这么做可以避免冗长的代码并且减少某些错误的机会。帮助提高代码的以执行并符合习惯。

Example(示例)

从定义的角度来讲,if语句、while语句、for语句中的条件判断得到true或false的结果。数值和0比较,指针和nullptr进行比较。

// These all mean "if `p` is not `nullptr`"
if (p) { ... } // good
if (p != 0) { ... } // redundant `!=0`; bad: don't use 0 for pointers
if (p != nullptr) { ... } // redundant `!=nullptr`, not recommended

通常,if(p)被读作如果p是合法的,这是程序员意图的直接表达,而if(p != nullptr)却是一种冗长的表达方式。

Example(示例)

本规则在声明作为条件使用时特别有用。

if (auto pc = dynamic_cast(ps)) { ... } // execute if ps points to a kind of Circle, good

if (auto pc = dynamic_cast(ps); pc != nullptr) { ... } // not recommended
Example(示例)

Note that implicit conversions to bool are applied in conditions. For example:

注意可以隐式类型转换为布尔类型的运算都可以用于条件语句。例如S:

for (string s; cin >> s; ) v.push_back(s);

This invokes istream's operator bool().

这段代码利用了istream的bool()运算符。

Note(注意)

将整数和0进行显示比较通常不是冗长形式。原因是(和指针和布尔类型不同,)整数通常可以表达多于两个有意义的值。另外通常使用0(zero)表示成功。因此,最好将整数比较作为特例。

void f(int i)
{
if (i) // suspect
// ...
if (i == success) // possibly better
// ...
}

Always remember that an integer can have more than two values.

一定记住整数可以拥有的有效值可以超过两个。

Example, bad(反面示例)

It has been noted that

已经提醒过了:

if(strcmp(p1, p2)) { ... }   // are the two C-style strings equal? (mistake!)

is a common beginners error. If you use C-style strings, you must know the functions well. Being verbose and writing

这是一个常见的,初学者错误。如果你使用C风格字符串,以一定知道函数。保持冗长并书写

if(strcmp(p1, p2) != 0) { ... }   // are the two C-style strings equal? (mistake!)

would not in itself save you.

也没什么帮助。

Note(注意)

The opposite condition is most easily expressed using a negation:

使用!更容易表达反逻辑:

// These all mean "if `p` is `nullptr`"
if (!p) { ... } // good
if (p == 0) { ... } // redundant `== 0`; bad: don't use `0` for pointers
if (p == nullptr) { ... } // redundant `== nullptr`, not recommended
Enforcement(实施建议)

Easy, just check for redundant use of != and == in conditions.

容易,只需要检查条件语句中多余的!=和==。

到此,相信大家对"C++为什么不要在条件语句中增加多余的==或!="有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

语句 条件 冗长 整数 示例 C++ 代码 类型 两个 内容 原因 布尔 指针 这是 错误 学习 帮助 运算 不同 合法 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 亿人帮互联网科技有限公司 中国互联网科技工作委员会毛军 科技互联网政务服务 互联网科技会 互联网科技金融 互联网科技公司发展 互联网科技英文 世界互联网领先科技成果 电子科技大学互联网 北京华百购互联网科技有限公司 彤创互联网科技有限公司 科技类公司包括互联网吗 美国互联网科技实力 科技互联网的核心竞争力 互联网金融科技元年 锡山区互联网智能科技产品供应 云南省自由互联网科技有限公司 半导体行业属于互联网高科技类吗 长沙渺峰互联网科技有限公司 安徽九吞吴互联网科技有限公司 互联网科技保险 科技互联网公司logo 卫星互联网科技股票 工业互联网展湾科技股份有限公司 合肥互联网科技公司公章图片 上海互联网科技公司ppt 工业互联网科技成果转化 上海同邻互联网科技有限公司规模 中国主要互联网科技公司 前海云享互联网科技
0