Вопрос к разнице моего кода в int и long - PullRequest
0 голосов
/ 10 марта 2020

хейо, так как я изучаю новые основы, я обнаружил, что предел 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, так почему оно достигает предела?

есть ли способ улучшить мой метод определения предела?

1 Ответ

1 голос
/ 10 марта 2020

Если a - наша длинная, наша программа прекратит цикл до того, как будет достигнуто МАКСИМАЛЬНОЕ значение long. Таким образом, значение 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 - наша длинная, наша программа попытается для -l oop (приращение) после достигнуто МАКС. ЗНАЧЕНИЕ a (целое число) - , поэтому наша программа зависнет и ничего не будет напечатано.

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);
  }
}
...