Mi sono imbattuto in questo pezzo di codice. Generalmente uso '& &' o '||' per separare più condizioni in un ciclo for
, ma questo codice utilizza le virgole per farlo.Condizioni multiple in un ciclo C 'per "
Sorprendentemente, se cambio l'ordine delle condizioni l'uscita varia.
#include<stdio.h>
int main() {
int i, j=2;
for(i=0; j>=0,i<=5; i++)
{
printf("%d ", i+j);
j--;
}
return 0;
}
uscita = 2 2 2 2 2 2
#include<stdio.h>
int main(){
int i, j=2;
for(i=0; i<=5,j>=0; i++)
{
printf("%d ", i+j);
j--;
}
return 0;
}
uscita = 2 2 2
Qualcuno può spiegare il motivo? Sembra che stia controllando solo l'ultima condizione separata da virgole.
Codice errato. Hai ragione; più condizioni dovrebbero essere unite con && or ||. – Caleb
Cinque risposte, tutti prendono la domanda eccessivamente alla lettera e spiegano cosa fa una virgola, e non una singola risposta che suggerisce che questo è orribilmente, orribilmente rotto. –