我正在努力理解。当n从int范围传递到long int范围时会发生什么?为什么这不会给编译器带来冲突?我打算用它来创建一个大小为n的数组(我知道它会占用大量的内存并且它并不意味着最终值)我认为只能通过int索引并且不长,尽管到目前为止没有日食的错误。帮助理解会非常感谢。
for (int n= 10; n <= ((long)(500*Math.pow(10,6))); n=n*2)
答案 0 :(得分:1)
for循环不会将n视为除int以外的任何内容,它会在
中操作nn = n * 2
但是这里是一个int,所以你会得到溢出行为n永远不会超过最大int值。
在评估终止条件时,for循环需要一个布尔值
n <= ((long)(500*Math.pow(10,6)))
这是一个int与long相比,所以n被转换为long只是为了评估比较这个想法为
long tmp = n;
if ( tmp <= bigLongValue)
n本身不受影响。
答案 1 :(得分:0)
甚至不需要int
试试这个 for(float t = 0; t&lt; = 2; t = t + 1){ 的System.out.println(T); }
因此,循环与值和类型无关
并创建一个无限循环
有(;;){ }
可以使用。