标题说明了一切。一般的教授和程序员是否有任何理由写
if ( x >= 1 )
而不是
if ( x > 0 )
答案 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
。现在,当您稍后阅读代码时,您可以轻松地确定需求和意图。我认为这在学校特别有用,可以在学生还在学习的时候说清楚。