Unten ist ein Ausschnitt des C-Standards (Abschnitt 6.8.5 des n1256 TC3 C99).Alternative For-Loop-Syntax
Iteration-Anweisung:
während(Ausdruck)Anweisung
tunAnweisungwährend(Ausdruck);
für(Ausdruck opt; Ausdruck opt; Ausdruck opt)Anweisung
für(ErklärungAusdruck opt; Ausdruck opt)Anweisung
Was mein Interesse weckt ist die letzte Anweisung: for (declaration expression ; expression) statement
. 6.8.5.1 erklärt die for
Schleife, erwähnt aber nur die for (clause-1 ; expression-2 ; expression-3) statement
Syntax.
Ich habe ein paar Versuche gemacht, Code nach dieser Syntax zu schreiben, aber sie alle gaben mir Syntaxfehler. Beispiele:
for (int i = 0, i; i++) { /* ... */ }
for (int i = 0; !(i++)) { /* ... */ }
, die alle Ergebnisse in Fehlern ähnlich wie error: expected ‘;’ before ‘)’ token
bei der Verwendung von GCC (v4.9.2) zusammengestellt.
Ich bin nicht sicher, ob ich den Standard in der richtigen Weise interpretiere. Kann diese Syntax nützlich sein oder habe ich etwas übersehen?
ich wirklich eine * Erklärung Ausdruck gefragt, was * sein wouldd vor :-) – Bergi
die Antworten zu lesen ist dies genau die gleiche Frage wie: http://stackoverflow.com/questions/23168997/is-there-a-way-to-create-a-for-loop-with-only-two-expressions-in-c – Octopus