回答
如果你有这样的代码:
if (a == b)
{
// block 1
}
else
{
// block 2
}
它可以改写为:
if (a != b)
{
// block 2
}
else
{
// block 1
}
这两个例子做同样的事情。两者都不是比其他更有效率。如果一个人比另一个人使用更多,那么可能是个人偏好。
你应该根据你试图表达的逻辑条件使用==
或!=
。如果你关心这两个true
和false
条件,即if
和else
零件都然后切换净效应(如果它是一个简单的比较)就是其中的代码需要出现在哪一部分。
有一个编码风格,看(书)代码完成的上成型布尔表达式积极这表明该表达的东西正布尔表达式比那些表达负面的东西更容易理解部分。
如果您只关心评估为true
的情况,例如,你只关心你何时平等(对于==
)或者没有平等(对于!=
),那么如果你选择正确的一个,你就不需要else
部分。
大部分时间使用的偏好=或==将取决于内容:!
resultOfOperationOrCall = operationOrCall(...);
if (resultOfOperationOrCall != somePredefinedErrorTypeValue) {
// Normal processing
} else {
// Exception/error processing
}
这里使用=在逻辑上是比使用==
'if(resultOfOperationOrCall == resultOK)'有什么问题? – 2012-07-27 11:57:55
我没有看到'!='在逻辑上比在这里使用'=='更清楚。所写的代码不必要地脆弱。它假定没有特定的错误与成功相同,这通常是一个不好的假设。如果该函数返回其他错误会怎么样?即使它不是今天,如果它在未来会改变为返回其他错误,该怎么办?另外,我个人更喜欢首先有失败路线;它们通常很短,并且当故障路径位于距'if'条件数十行的'else'子句中时,难以遵循代码。 – jamesdlin 2012-07-27 12:14:16
如果您有一些PredefinedErrorTypeValue但没有正常的结果值。在我的评论中somePredefinedErrorTypeValue可能为null,任何非空是正常的,只有null是一个错误(作为一个例子) – 2012-07-27 12:38:22
更清楚我喜欢!=
,因为它是更明确(并且写入=
的机会较少)。
!=或==比较在CPU上完成一次在所有位上同时注册 – 2012-07-27 10:51:26
为什么' =='需要测试所有的位?它只需要测试到第一个不匹配。如果所有的但最后一点都是一样的呢?在这种情况下,'!='仍然需要测试所有的位。这里'=='和'!='没有区别。 – 2012-07-27 11:11:21
如果您害怕拼写错误,您如何避免错误地写'<='? – 2012-07-27 12:01:00
至于两个汇编代码==和!=所以目前的x86无效率或低效率的代码问题architecture.So它是给你。你可以使用其中的任何一个。
如果由于某种机器如果汇编代码不可用,则有效的或无效的来临都以图片作为由编译器通过执行一些额外的操作来实现(即添加额外的汇编代码)。
它的完全和完全取决于用户的需求感知&。我没有看到任何理由,为什么会使用!=超过==
- 1. 单元测试(是或否)
- 2. 测试是否getJSONArray为空或不是
- 3. PHP if if语句测试api php字段是否为空
- 4. MySql:是否可以'SUM IF'或'COUNT IF'?
- 5. “单元测试”是否属于白盒或黑盒测试?
- 6. ASP.NET MVC路由测试是否考虑过单元测试或集成测试?
- 7. Angular 1/Jasmine - 测试元素是否存在于ng-if
- 8. 关键字“if”如何测试值是否为false?
- 9. 在if语句中测试Java Long值。是否0!= 0
- 10. 'if(x)`是否为非零值的合法测试语言?
- 11. 是否有必要测试NULL是否也测试大于?
- 12. 测试在IF式
- 13. 测试if语句
- 14. 是/否使用布尔值或if/else?
- 15. 测试URL是否有效
- 16. 测试是否引发ValidationError
- 17. 我是否正确测试?
- 18. 测试是否上传
- 19. 测试是否支持Three.js
- 20. 测试是否有WordPress的
- 21. 测试是否显示=无
- 22. 测试是否有意图
- 23. 测试是否a&b == 0
- 24. CSS @media以测试是否是iPhone或Android
- 25. 测试是否存在javascript小部件或不是
- 26. 这个PHPUnit测试是否有意义(或者我正在测试框架/ PHP)?
- 27. 输出测试字符串是否是回文测试
- 28. 测试if语句 - AngularJS/Jasmine
- 29. “if”语句的测试-s
- 30. 检测是否JUnit测试类是在一套房运行或单独
你知道他们做不同的事情,对吧? – cnicutar 2012-07-27 09:57:38
我很好奇,如果这是真的。我在GCC源代码中对它进行了大量的处理,下面是我得到的结果:'grep -B 2“==”* .c | grep“if”| wc -l':22.3k次点击。使用'!='的同一个查询仅提供了:9.6k次点击。看起来像GCC开发者更喜欢'=='。 – ArjunShankar 2012-07-27 10:11:28
@ArjunShankar:我对Linux源代码做了同样的事情:'=='有137k出现,'!='只有83k出现。数据似乎不支持问题中的断言。 – 2012-07-27 10:15:27