Je suis tombé sur cela dans le texte standard C, toute version que je peux trouver pour C99 ou C11, au § 6.8.5:
iteration-statement: while ( expression ) statement do statement while ( expression ) ; for ( expression ; expression ; expression ) statement for ( declaration expression ; expression ) statement
Le quasortingème élément ici semble être un for
avec un seul point-virgule, et je ne vois aucune référence à cette syntaxe ailleurs. Quelqu’un peut-il expliquer ici ce qui me manque?
La production pour la declaration
est:
déclaration:
spécificateurs de déclaration init-declarator-list opt ;
Donc, le point-virgule en fait déjà partie.