繁体   English   中英

这个'for'循环是否停止,为什么/为什么不? for (int i=1; 1/i > 0; i++) { }

[英]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(整数除法),所以它停止了。

  1. 第一次迭代:i = 1,1/1 等于 1 所以继续。
  2. 第二次迭代: i = 2 ,1/2 等于 0 因为它是整数除法,所以条件为假并停止。

javadoc中记录了有关整数除法的详细信息

是的 for 循环在一次迭代后停止。 在第二次迭代中将 1 除以 2 将导致 for 循环停止,因为整数不记录小数,这意味着一除以二将是 0 而不是 0.5。

1/2被计算为整数,并简单地削减小数点。 因此1/2 = 0

如果这些数字之一是浮点数(例如1.0/21/2.0 ),它将返回预期的0.5

在这段代码中

for(int i=1; 1/i > 0; i++) {
//any code here
}

在你的代码中

  1. 将条件设置为大于 0 的数字
  2. 计数器从 1(整数)开始
  3. 第一次运行 for 循环脸颊条件 1/1 > 0 => true 代码执行。
  4. 第一次运行后,计数器递增 1 。
  5. 之后 for 循环脸颊条件 1/2 > 0 => false 不执行和 for 循环停止

为什么 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM