Plusieurs conditions dans un C "pour" boucle

Je suis tombé sur ce morceau de code. Je l'utilise généralement "&& " ou "| | " pour séparer plusieurs conditions dans un for boucle, mais ce code utilise des virgules pour le faire.

Étonnamment, si je change l'ordre des conditions de la sortie varie.

#include<stdio.h>

int main() {
    int i, j=2;

    for(i=0; j>=0,i<=5; i++)
    {
         printf("%d ", i+j);
         j--;
    }
    return 0;
}

De sortie = 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;
}

De sortie = 2 2 2

Quelqu'un peut-il expliquer la raison? Il semble être de ne cocher que la dernière séparées par des virgules condition.

  • Mauvais code. Vous avez raison, plusieurs conditions doivent être réunis avec des && et ||.
  • Cinq réponses, tout le monde en prenant la question trop littéralement et en expliquant ce qu'une virgule, et pas une seule réponse, ce qui suggère que c'est terriblement cassé.
InformationsquelleAutor Prateek | 2013-05-31