Какое значение имеет число 100000000 как граница переполнения в Паскале?

Какое значение имеет число 100000000 как граница переполнения в Паскале?

Недавний разговор о программном обеспечении без ошибок на работе привел к обсуждению TeX (который считается практически без ошибок, хотя технически это может быть неправдой). Поскольку исходный код TeX подробно документирован в«TeX: Программа», мы заглянули внутрь и выбрали одну процедуру, которая была неясна на первый и второй взгляд. Это реализация print_int, которая находится в §65 этой книги на странице 28. В ее документации говорится:

@ The following procedure, which prints out the decimal representation of a given integer |n|, has been written carefully so that it works properly if |n=0| or if |(-n)| would cause overflow. It does not apply |mod| or |div| to negative arguments, since such operations are not implemented consistently by all \PASCAL\ compilers.

Сама процедура выглядит так (код взят из WEB-источника):

procedure print_int(@!n:integer); {prints an integer in decimal form}
var k:0..23; {index to current digit; we assume that $|n|<10^{23}$}
@!m:integer; {used to negate |n| in possibly dangerous cases}
begin k:=0;
if n<0 then
  begin print_char("-");
  if n>-100000000 then negate(n)
  else  begin m:=-1-n; n:=m div 10; m:=(m mod 10)+1; k:=1;
    if m<10 then dig[0]:=m
    else  begin dig[0]:=0; incr(n);
      end;
    end;
  end;
repeat dig[k]:=n mod 10; n:=n div 10; incr(k);
until n=0;
print_the_digs(k);
end;

Хотя сам алгоритм вполне понятен (в конце концов, он просто печатает число), мы не могли понять, какое значение имело число 100000000 в контексте компиляторов Pascal того времени. В документации упоминаются переполнения, однако я бы ожидал, что переполнение произойдет на границе «степени двойки», а не на «степени десяти».

Каково объяснение или значение этого числа? Это причуда компилятора или стандарта языка?

Связанный контент