> 0和> = 1之间有什么区别?

时间:2014-03-26 12:54:58

标签: syntax

标题说明了一切。一般的教授和程序员是否有任何理由写

if ( x >= 1 )

而不是

if ( x > 0 )

4 个答案:

答案 0 :(得分:4)

如果两者都是整数,则没有区别

答案 1 :(得分:1)

这里有一个性能考虑因素 - 在某些情况下,CPU可以比0更快地与0进行比较。聪明的编译器可能能够对此进行优化,但与0相比通常是更好的做法。

编辑:对此有点澄清 - 处理器有零'当算术运算或比较指令的结果为零时,置位的标志。还有一个“消极的”消极因素。国旗也是。 A'比较'指令实际上或多或少与减去'相同。指令,除了没有存储结果,但设置了标志。

它确实依赖于上下文,但如果该变量刚刚由算术运算设置,并且它现在为0,则零标志已经设置,并且不需要比较指令确定x是否> 0.当它为1时,需要与常数1进行比较以设置零标志,并满足条件。

对于(伪代码)示例,一些编译器(我已经看过Delphi这样做)会优化

for x = 0 to 10 { print "hello world " }

for x = 10 down to 0 { .. }

仅仅是因为它不需要将x与10'进行比较。每次,因为在减去x的结果已经在最后一次迭代上设置了零标志。当然,如果在循环中没有引用x,它只能这样做,否则它会改变功能。

维基百科进一步澄清了零' flag:http://en.wikipedia.org/wiki/Zero_flag

答案 2 :(得分:1)

在技术上使用一个或另一个没有区别(授予x是一个整数,显然它是。)

然而,选择一个比较而不是另一个可能具有语义含义。一个人说:

  

此操作是否超过0 X es。我可以处理任何正数量的物品

另一个说

  

此操作至少有1个X。如果没有至少1项

,我无法执行此操作

它们具有相同的含义,但以不同的方式表达,可以帮助理解为什么要与这种价值进行比较。

答案 3 :(得分:0)

这取决于x的类型。如果它是一个整体类型,它们是相同的,这是个人偏好。我总是选择最短的x > 0。但是,如果它是浮点数/定点数类型,则存在很大差异,因为0和1之间有许多值。

但是,人们选择一个而不是另一个原因可能有两个原因:

1)为了明确意图:如果要求是"给我一个从一个向上的整数",那么他们使用x >= 1,而如果要求是"给我一个正整数",然后他们使用x > 0。现在,当您稍后阅读代码时,您可以轻松地确定需求和意图。我认为这在学校特别有用,可以在学生还在学习的时候说清楚。

2)一些开发人员不知道自己在做什么,甚至对基础知识感到困惑,所以他们在不分析对性能,安全性等的影响的情况下实现上述要求。在我们的示例中在这里,确实没有什么害处,但在其他一些代码中,可能存在巨大的差异,而且我看到很多开发人员都不知道差异和影响。