Почему при складывании большого количества чисел, выводится отрицательное число?

Рассматривается множество целых чисел принадлежащих числовому отрезку от 4221 до 17523 которые в восьмеричной СС оканчиваются на 6 и в четверичной на 2. Надо найти сумму таких чисел и минимальное из них.

Написал код на паскале

var i, min, sum: integer;
begin
    sum := 0;
    min := 20000;
    for i := 4221 to 17523 do begin
        if(i mod 8 = 6) and (i mod 4 = 2) then 
        begin
            sum := sum + i;
            if i < min then
                min := i;
        end;
    end;
writeln(sum, ' ', min);
end.

В итоге на экран в переменной sum выводится отрицательное число. В чем моя ошибка?


Ответы (1 шт):

Автор решения: Zhihar

Диапазон значений integer в Паскале - -32768..32767.

А сумма получается 36160272, поэтому и получается отрицательным.

Используйте тип longint.

→ Ссылка