对我的 int 和 long 代码差异的问题

Question to my code difference in int and long

嘿哟 当我学习新的基础知识时,我发现 int 的限制为 2^32 -1 所以我想知道我是否可以使用 unsigned int 或 long

明显地增加它

我尝试了以下方法

class test {
    public static void main(String[] args) {
        int i;
        int a=0;

        for (i=1; i>0; i++) {
            a++;
        }
        System.out.println("Done, a=" +a);
    }
}

我注意到了 更改 long a=0 不会更改输出,但为什么呢?

将 i 更改为 long 确实会更改输出

在我的理解中,i 的值仍然为 0 那么为什么它会达到极限?

有没有办法改进我找到极限的方法?

如果 a 是我们的 long,我们的程序将在达到 long 的 MAXVALUE 之前停止循环。 因此 a 的值将是 2147483647。

class Test {
  public static void main(String[] args) {
    int i;
    long a = 0;

    for(i = 1; i > 0; i++) {
      // This will stop incrementing when we reach the MAXVALUE
      // of an int (i), which is 2147483647
    }

    System.out.println(a);
  }
}

如果 i 是我们的 long,我们的程序将尝试 for-loop(递增)after a(整数)的 MAXVALUE 是已达到 - 因此我们的程序将挂起并且不会打印任何内容。

class Test {
  public static void main(String[] args) {
    long i;
    int a = 0;

    for(i = 1; i > 0; i++) {
      // This will try to increment **a** beyond the max
      // value of an int
    }

    System.out.println(a);
  }
}