Sto leggendo un po 'di codice Pascal e tutto è piuttosto semplice, tranne i subranges. Nel programma che sto leggendo c'è una variabile d
con la seguente dichiarazione di tipo: array[0..22] of 0..15
; c'è poi la seguente procedura:
var a:integer;
begin
a:=0;
while k>0 do
begin
k:=k-1;
a:=(a+dig[k]*two) div 10;
end;
round_decimals:=(a+1) div 2;
end;
Dove k
è una variabile di tipo 0..63
. Quindi, dato che k
può essere sopra l'intervallo dell'indice di dig
come funziona questo codice? - È una routine per fare aritmetica in virgola fissa e quindi suppongo che l'array indicie trabocchi in qualche modo controllato, ma se qualcuno potesse spiegare il comportamento esatto sarei davvero felice. Inoltre, gli array Pascal si assegnano in qualche modo conosciuto? C'erano molte versioni di Pascal e penso che questo programma sia scritto in un modo abbastanza "agnostico in versione Pascal", ma non trovo molte spiegazioni sulla semantica sottile delle espressioni subrange.