为什么循环不会在其条件下作为有效类型花费很长时间?

Why don't loops take long as a valid type in its conditions?

我正在做一些 Project Euler 练习,需要使用非常大的数字。 我仍然需要使用一些基本循环,例如 for 循环或 while 循环。

我的 IDE Netbeans 给我一个错误,我无法理解。

    long l = 10000000000L;
    while (l<10000000000000){

    }
    for (long k =0;k<10000000000000;k++){

    }

在两个循环中我都得到了评论:"Integer number too large : 10000000000000" 当我清楚地使用 'long' 时,它怎么能谈论整数呢? 这些循环仅适用于 'int' 吗? 如果是这样,我将如何使用 'long' 作为类型具有相同的功能?

看起来很简单:)

    long l = 10000000000L;
    while (l < 10000000000000L) {

    }
    for (long k = 0; k < 10000000000000L; k++) {

    }

您需要添加 l(或 L)后缀以将号码标记为 long:

while (l<10000000000000l){

}
for (long k =0;k<10000000000000l;k++){

}

否则该数字将被视为整数,并且它高于整数范围内的最大值(2147483647)。