Off-by-one error: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Migliorato italiano introduzione |
aggiunge link a C →Iterazioni oltre il termine dell'array |
||
Riga 4:
Consideriamo un [[array]] di oggetti, dei quali dobbiamo processare quelli da un certo valore ''m'' ad uno ''n'' (estremi inclusi). Quanti elementi si trovano in questo range? Una risposta intuitiva potrebbe essere ''n'' – ''m'', ma questo è proprio un errore di off-by-one, più precisamente del tipo fencepost; la risposta corretta è infatti (''n'' – ''m'') + 1.
Proprio per via di questa contro-intuitività, i range nell'informatica sono spesso rappresentati da [[Intervallo (matematica)|intervalli]] semi-aperti; il range da ''m'' ad ''n'' inclusivo infatti, è rappresentato dagli elementi che vanno da ''m'' (incluso) ad ''n'' + 1 (escluso), proprio per evitare errori di fancepost. Per esempio, un [[Iterazione|ciclo]] che itera cinque volte (da 0 a 4 incluso) può essere scritto in [[C (linguaggio)|C]] come un intervallo semi-aperto da 0 a 5:<syntaxhighlight lang="c">
for (i = 0; i < 5; i++)
{
|