I seguenti due blocchi di codice sono esattamente uguali e ottenere la stessa cosa? Esso mostra la stessa cosa quando ho eseguito il programma, ma mi apprezzerebbe qualche spiegazione rigorosa.È qualcosa come "per (i = 1; i <= 10; printf ("% d n "; i), i ++) valido e UB-free in C?
for(i=1;i<=10;i++)
{
printf("%d\n",i);
}
e
for(i=1;i<=10;printf("%d\n",i),i++);
il for
ciclo prevede dichiarazioni C valide come argomenti, doesn vero? Ma anche se ho verificato su StackOverflow che affermazioni come x+=4,y=x*2;
sono sicure in quanto la virgola funge da sequenza punti qui, è la stessa verità per la dichiarazione printf("%d\n",i),i++)
passata come argomento nel ciclo for
sopra?
E se sì, la briga di rispondere alla domanda minore che ne derivano:
fa il
comma
agire come punti di sequenza in un comunicato che coinvolge molti separati da virgolachiamate di funzione, come di seguito:
printf("Enter number\n"),scanf("%d",&number),printf("You entered %d",number);
Sì, ma perché vuoi scrivere codice come questo? (La virgola è il punto di sequenza, purché non sia la virgola all'interno di una chiamata di funzione). – nhahtdh
Sì, è Ok. L'operatore virgola introduce un punto di sequenza. – wildplasser
Fa parte dello standard C .. fammi trovare il riferimento. –