应该'如果'测试' =='或'!='

时间:2012-07-27 09:55:55

标签: c if-statement

!=使用==以上是否有任何特殊原因?

我注意到!=似乎更常见,但想知道是否有理由这样做。

5 个答案:

答案 0 :(得分:3)

如果你有这样的代码:

if (a == b)
{
    // block 1
}
else
{
    // block 2
}

可以改写为:

if (a != b)
{
    // block 2
}
else
{
    // block 1
}

这两个例子做同样的事情。两者都没有比另一个更有效率。如果一个人使用得比另一个人多,那么可能是个人偏好。

答案 1 :(得分:2)

您应该根据您尝试表达的逻辑条件使用==!=。如果您同时关注truefalse条件,即ifelse部分,则切换的净效果(如果是简单的比较)就是代码需要出现在哪个部分。

有一种编码风格,请参阅(书)代码完成正面形成布尔表达式的部分,这表明表达积极的东西的布尔表达式更容易理解比那些表达消极的东西。

如果您只关心评估为true时的情况,例如你只关心你有平等(对于==)或者没有平等(对于!=)那么如果你选择了正确的那个,你就不需要else部分。

答案 2 :(得分:1)

大多数情况下,使用!=或==的偏好取决于内容:

resultOfOperationOrCall = operationOrCall(...);
if (resultOfOperationOrCall != somePredefinedErrorTypeValue) {
// Normal processing
} else {
// Exception/error processing
}

这里使用!=在逻辑上比使用==

更清晰

答案 3 :(得分:1)

我更喜欢!=,因为它更明确(并且=写错的可能性更小)。

答案 4 :(得分:0)

由于==和!=的汇编代码都存在,所以x86架构的代码没有高效或低效的问题。所以它取决于你。你可以使用其中任何一个。

如果对于某些机器,如果汇编代码不可用,那么高效或低效会使其成为图像,因为编译器通过执行一些额外的操作(即添加额外的汇编代码)来实现。