'if`语句的奇数表示法

时间:2016-09-26 10:45:10

标签: c++

我正在查看我遇到以下if声明的遗留代码

if (!(foo == bar)){
    // lots of code here
}

上写这个有什么好处
if (foo != bar){
}

如果相关,则代码库为C ++。

2 个答案:

答案 0 :(得分:6)

它们应该是等价的,对于普通的旧数据类型它们当然是,但如果作者(非常规地)为==而不是!=提供了重载运算符,那么第二种写作方式这将无法使用。

为了便于阅读,我想我更愿意看到

if (foo == bar){
    // do nothing
} else {
    // lots of code here
}

尽管最清楚的方法是调整代码库以提供!=运算符,并且您采用第二种方式编写此代码。

答案 1 :(得分:2)

类型(模板参数)的要求(概念)可能包括EqualityComparable,但不包括NotEqualityComparable(不存在http://en.cppreference.com/w/cpp/concept中列出的库概念)。

LessThanComparable概念类似:C ++算法不需要大于概念(它是多余的)。