Quando eseguo il seguente ciclo:
unsigned m;
for( m = 10; m >= 0; --m ){
printf("%d\n",m);
}
il ciclo non si ferma a m == 0, continua a essere eseguito in modo interminabile, quindi ho pensato che il motivo per cui un non firmato non può essere paragonato a 0. Ma quando ho fatto il seguente test
unsigned m=9;
if(m >= 0)
printf("m is positive\n");
else
printf("m is negative\n");
Ho ottenuto questo risultato:
m is positive
che significa che la variabile unsigned m è stata confrontata con successo con 0.
Perché il confronto di m su 0 non funziona nel ciclo for e funziona bene altrove?