Un '''off-by-one error''' ('''OBOE'''), detto anche '''OBOBoff-by-one bug''' ('''off-by-one bugOBOB'''), è un errore logico di [[Programmazione (informatica)|programmazione]] che avviene quando un [[Iterazione|ciclo iterativo]] viene ripetutoeseguito una volta di troppopiù o una volta di meno di quanto voluto, a causa di un errore nella specifica della condizione di verità:. solitamenteSolitamente ciò accade quando il programmatore mettesceglie erroneamente il simbolo di ''minore o uguale'' al posto del simbolo ''minore'', o il simbolo ''maggiore o uguale'' al posto di ''maggiore'', oppure quando commette un errore nell'inizializzazione della [[variabile (informatica)|variabile]] testata, settandola a zerouno anziché a uno:zero, questovisto causache problemiin admolti esempiolinguaggi sedi essa si riferisceprogrammazione alll'indice di un [[array]] (ilcomincia qualeda inzero. moltiQuesto linguaggierrore dipuò programmazioneanche cominciacapitare dain zero);contesti oppurematematici, nelper casoesempio inse cuiusata essacome poidivisore sia usata in una divisione (nel qual caso è bene sia settata a valori diversi da zero, per evitare eccezioni del tipo ''divisione per zero'').
== Iterazioni oltre il termine dell'array ==
Consideriamo un [[array]] di oggetti, dei quali dobbiamo 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 (escluso), proprio per evitare errori di fancepost. Per esempio, un [[Iterazione|ciclo]] che itera cinque volte (da 0 a 4 incluso) può essere scritto come un intervallo semi-aperto da 0 a 5:<syntaxhighlight lang="c">