почему это приведет к переполнению длинных целых чисел

Я проверил документ, в котором long = int64 имеет диапазон более 900 000 000 000 000

Вот мой код :

int r = 99;
long test1 = r*r*r*r*r;

во время выполнения он дает мне 919 965 907 вместо правильных 9 509 900 499.

другой тест

long test2 = 99*99*99*99*99;

Он отказывается от компиляции, говоря о целочисленном переполнении.

Но если я сделаю это

long test3 = 10100200300;

Это нормально работает.

19
задан Tim 24 July 2014 в 16:42
поделиться