Come indicato nella domanda, entrambi i cicli sono equivalenti. Nel codice reale, tuttavia, è tipico che le cose siano un po 'più complicate, e in tal caso, la condizione "i < n" tende ad essere un po' più sicura. Se, ad esempio, potessi aumentare di più di uno, potrebbe passare n e quindi la versione "i! = N" risulterebbe in un ciclo eterno.
Questo è un caso di programmazione difensiva.Non è universalmente accettato: alcune persone preferiscono assicurarsi che le cose falliscano nel modo più spettacolare possibile, in modo che i bug vengano scoperti presto. Lo stile difensivo può nascondere piccoli problemi del genere. Tuttavia, se si vuole prendere tutti i bug, si potrebbe anche andare fino in fondo:
int n = 5;
int i = 0;
while (i != n) {
int old_i = i;
// the real stuff of the loop here
++i;
assert(i == old_i + 1);
}
(O, meglio ancora, utilizzare un langauge che supporta synxtax per specificare pre e post condizioni e invarianti di ciclo in modo nativo .)
Il libro "C Traps and Pitfalls" di Andrew Koenig (vedi http://en.wikipedia.org/wiki/C_Traps_and_Pitfalls per i principianti) è probabilmente interessante per te se ti piace riflettere su questo tipo di domande.
fonte
2009-01-25 10:25:40
downvoting duro! sembra una domanda perfettamente legittima! –
Questo era un esempio di "C++ accelerato: programmazione pratica con l'esempio/Andrew Koenig, Barbara E. Moo." Volevo solo sapere perché l'Autore preferisce il primo – yesraaj
@raj - Forse menzionare nella tua domanda dove hai trovato il problema e dire che stai cercando una spiegazione sul motivo per cui uno è migliore dell'altro. Potrebbe impedire una rapida riduzione del voto. – Dana