Off-by-one error: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m Bot: codifica, sostituzione o rimozione di caratteri unicode per spazi tipografici particolari |
|||
Riga 6:
Consideriamo un [[array]] di oggetti, dei quali processare quelli compresi 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
for (i = 0; i < 5; i++)
{
Riga 41:
In caso di utilizzo di numeri molto grandi, avere una ripetizione in più può non essere un problema così evidente. Avendo a che fare con numeri più piccoli invece, soprattutto in casi specifici nei quali la precisione è essenziale, commettere un errore off-by-one può essere disastroso. A volte l’errore potrà essere inoltre ripetuto e anche peggiorato, nel caso in cui un susseguirsi di persone utilizzino uno stesso calcolo errato portandoselo dietro di volta in volta (ovviamente l’errore potrebbe anche venire corretto).
Un esempio di quando un errore di questo tipo si può verificare coinvolge il linguaggio [[MATLAB]],
== Implementazioni di sicurezza ==
Riga 69:
<references />
* Una versione precedente di questo articolo è disponibile alla voce [[foldoc:fencepost error|fencepost error]] su [[foldoc:|FOLDOC]], utilizzato con i relativi [[:en:Wikipedia:Foldoc_license|permessi]]
* Edsger Wybe Dijkstra (2 Maggio 2008).
|