Sind die folgenden zwei Code-Blöcke genau gleich und das gleiche erreichen? Es zeigt die gleiche Sache, wenn ich das Programm laufen, aber ich würde eine rigorose Erklärung zu schätzen wissen.Ist etwas wie "für (i = 1; i <= 10; printf ("% d n "; i), i ++) gültig und UB-frei in C?
for(i=1;i<=10;i++)
{
printf("%d\n",i);
}
und
for(i=1;i<=10;printf("%d\n",i),i++);
die for
Schleife erwartet gültig C Aussagen als Argumente, doesn Ist es aber, obwohl ich auf StackOverflow verifiziert habe, dass Aussagen wie x+=4,y=x*2;
sicher sind, da das Komma als Folge fungiert Punkte hier, ist die gleiche Wahrheit für die Aussage printf("%d\n",i),i++)
übergeben als Argument in der for
Schleife oben?
Und wenn ja, stören Sie bitte die kleine Frage zu beantworten, die sich daraus ergeben:
Hat die
comma
wirken als Folge Punkte in einer Erklärung viele Komma Beteiligung getrenntFunktion wie unten ruft:
printf("Enter number\n"),scanf("%d",&number),printf("You entered %d",number);
Ja, aber warum möchten Sie Code so schreiben? (Komma ist ein Sequenzpunkt, solange es nicht das Komma innerhalb eines Funktionsaufrufs ist). – nhahtdh
Ja, es ist Ok. Der Komma-Operator führt einen Sequenzpunkt ein. – wildplasser
Es ist Teil des C-Standards .. lass mich die Referenz finden. –