2000 – 19

Considerate il seguente frammento di codice:

float i, f;
...
f=1/50.0;
for(i=0.0; i != 1.0; i+=f)
    printf("A");
Quale dei seguenti effetti ha il ciclo for indicato?
  1. Stampa 50 volte il carattere A.
  2. Stampa 51 volte il carattere A.
  3. Stampa 49 volte il carattere A.
  4. Il ciclo potrebbe non terminare, stampando infinite volte il carattere A.
  5. Il compilatore segnala un errore.
  6. Il ciclo non viene mai eseguito.

Soluzione: 4 (Il ciclo potrebbe non terminare, stampando infinite volte il carattere A)


Il ciclo termina nel caso in cui il valore di i diventi esattamente 1.0 ma non è garantito che succeda con la rappresentazione in virgola mobile dei float.