Originariamente inviato da premoli
beh non è propriamente vero ad esempio puoi fare così

for(i=0, j=0; i<N && j<M; i++, j++)

ed è perfettamente equivalente a:

i=j=0;
while(i<N && j<M){
.
.
.
i++;
j++;
}
Il for usato in quel modo è proprio brutta programmazione.
Il for andrebbe usato quando sai quante volte iterare. Il while/do-while invece nei casi in cui il numero di interazioni non è determinato.