![](/img/trans.png)
[英]Why i += i + a[i++] + a[i++] + a[i++] results in 8?
[英]Does this 'for' loop stop, and why/why not? for (int i=1; 1/i > 0; i++) { }
这个for
循环会停止吗?
for(int i=1; 1/i > 0; i++) {
}
如果是这样,什么时候以及为什么? 有人告诉我它会停止,但我没有理由这样做。
是的。
第一次迭代:i = 1,1/1 = 1 > 0,所以循环。
第二次迭代:i = 2, 1/2 = 0 !> 0(整数除法),所以它停止了。
javadoc中记录了有关整数除法的详细信息
是的 for 循环在一次迭代后停止。 在第二次迭代中将 1 除以 2 将导致 for 循环停止,因为整数不记录小数,这意味着一除以二将是 0 而不是 0.5。
1/2
被计算为整数,并简单地削减小数点。 因此1/2 = 0
。
如果这些数字之一是浮点数(例如1.0/2
或1/2.0
),它将返回预期的0.5
。
在这段代码中
for(int i=1; 1/i > 0; i++) {
//any code here
}
在你的代码中
为什么 for 循环在 1/2 处停止,因为 1 个整数和 2 个整数
和 integer / integer must = integer 1/2 = 0 (0.5 not integer) if you use this code for loop many many execution. 因为 int/float = float 1/1.0 =1 / 1/2.0= 0.5 / 1/3.0 = 0.33333 / 1/4.0 = 0.25 ...ect
for(float i=1; 1/i > 0; i++) {
//any code here
}
这是我第一次发帖,我绝对是新手,所以如果我提供的信息不正确,请有人纠正我:)。
我的理解是,因为 i 和 1 都是该行中的整数类型:
for(int i=1; 1/i > 0; i++)
那么您的程序将自动执行整数除法/算术,这会导致模数或余数被删除。 因此,在第二次迭代期间,剩余的 0.5 将被删除,导致 0 并因此终止循环。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.