Est-il possible de créer une boucle for avec seulement deux expressions en C?

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.