我刚刚遇到以下代码行:
if(someInt <= int.MinValue) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)
我想知道我是否遗漏了一些微妙的东西,这使得<=比较更直观的比较更好地使用==比较?
这是循环中使用的常用方法 - 而不是(例如)
if (value == max)
break;
Run Code Online (Sandbox Code Playgroud)
使用
if (value >= max)
break;
Run Code Online (Sandbox Code Playgroud)
虽然您知道值"永远不应该"大于max,但如果程序逻辑的某些部分错误,并且值传递为(max + 12),会发生什么?第一种情况将尝试在32位系统上循环40亿次; 第二种情况会在它意识到你已经超过"最大"位置时立即退出.
因此,它是一种更健壮的方式来说同样的事情,因为当一切设置正确时它会起作用,但是当某人搞砸时它也会起作用(或者至少不会发生灾难性的失败).处理器可以在= =内部类型的同时执行= =,因此没有性能差异.
但是,在比较Int和Int.MinValue时使用<=是多余的(虽然无害),因为在技术上不可能使值小于Int中的值.当然,Int64仍然可以小于Int32.MinValue.
所以我认为这是编码员的"习惯力".或者他们不信任Int.MinValue返回最小值:-)
| 归档时间: |
|
| 查看次数: |
287 次 |
| 最近记录: |