2010-05-30 4 views
8

Quali sono esattamente gli errori "off-by-one" nel ciclo while come faccio a capirlo e come risolverlo? GrazieQuali sono esattamente gli errori "off-by-one" nel ciclo while?

+0

Se si dispone di un errore specifico nel codice per il quale si desidera assistenza, è necessario pubblicare il codice. –

+0

No no non è un programma da correggere Devo tracciare alcuni programmi per sapere qual è l'errore ed è per un finale quindi non posso aspettarmene uno. – Dina

+0

Richiede il tag "compito domestico"? –

risposta

19

Un off-by-one error è per esempio quando si scrive intenzione di eseguire un ciclo n volte e scrivere qualcosa di simile:

for (int i = 1; i < n; ++i) { ... } 

o:

for (int i = 0; i <= n; ++i) { ... } 

Nel primo caso verrà eseguito il loop (n - 1) volte e nel secondo caso (n + 1) volte, dando il nome off-by-one. Sono possibili altre variazioni, ma in generale il ciclo viene eseguito troppe volte o troppo poche volte a causa di un errore nel valore iniziale della variabile di loop o nella condizione finale del loop.

Il ciclo si può scrivere correttamente come:

for (int i = 0; i < n; ++i) { ... } 

Un ciclo for è solo un caso particolare di un ciclo while. Lo stesso tipo di errore può essere fatto durante i cicli.

+7

hey, i tuoi esempi sono disattivati ​​di 2;) – Agos