如果可能的话,程序员应该总是使用<而不是< =?

时间:2014-04-09 07:27:51

标签: algorithm optimization

考虑两个for循环声明:

for (int i = 0; i < 70; ++i)

for (int i = 0; i <= 69; ++i)

我假设第二个将进行139次总比较而不是69次。我的假设是否正确?我不是电气工程师,所以我不知道ALU实际上是如何工作的,不管它是否小于或等于&#34; thingamabob一举或什么。

您能举例说明何时使用<=是合理的吗?

顺便说一句,我试图成为一个&#34;硬核&#34;像你们这样的程序员。

5 个答案:

答案 0 :(得分:5)

这里没有正确或错误的答案。

不同的循环会有不同的要求。有时您会使用<,有时您会使用<=。其他时候您将使用>

天哪,可能性!您可以使用&&||或...

有时你根本不会使用操作员!你可以使用变量的值!

或函数的返回值!

或者......布尔!


另外,请查看short-circuit evaluation

给出以下逻辑表达式

9 < 10 || 9 == 10

只会进行1次比较,因为前半部分是真的。

我相信<=会相应地进行优化。

答案 1 :(得分:3)

相关的事情不是使用'&lt;'或'&lt; =',这是无关紧要的。

重要的是7069是否是您计划中的重要内容。

也就是说,如果你的数组有70个元素,那么最合乎逻辑的做法是编写70,并使用相应的操作数。

例如,在具有基于1的数组的语言中,您将编写:

for i = 1, i <= 70

但在基于0的数组中:

for i = 0, i < 70

答案 2 :(得分:0)

没有。第一个和第二个循环产生相同数量的循环,即70。

也没有比较。像你输入的for-loop结构只会使一行或一段代码重复出现。

如果您想进行比较,则需要使用if声明。

何时使用<<=是所有个人编码偏好。只要它给你相同的结果,你可以安全地使用其中任何一个。

当然,某些情况可能会更好地使用一个而不是另一个。但这些只是具体案例。

编辑:如果一杯半空,你会说它是半空还是半满?你的回答可能是&#34;两者对我来说都是一样的。&#34;。与选择<<=类似。您可以随意使用自己喜欢的任何一种。没有固定的规则。

答案 3 :(得分:0)

我不认为<=会进行两次比较而<只会进行两次比较。编译器通常不会按字面解释此运算符,并可能在内部将<=更改为<

答案 4 :(得分:0)

除了另一个答案之外,在你的情况下,for (int i = 0; i < 70; ++i)更常规,因为一旦习惯了,乍一看很容易看到我们将有70次迭代(包括从0到69)。