Ниже приведен фрагмент стандарта C (раздел 6.8.5 n1256 TC3 C99).
итерация-оператор:
в то время как ( выражение ) выражение
do оператор , тогда как ( выражение );
< nbsp; для ( выражение opt; выражение opt; выражение opt)
для ( выражение выражения opt; выражение opt)
Что вызывает интерес к последнему утверждению: for ( declaration expression ; expression ) statement
. 6.8.5.1 объясняет цикл for
, но только упоминает синтаксис for ( clause-1 ; expression-2 ; expression-3 ) statement
.
Я сделал несколько попыток написания кода в соответствии с этим синтаксисом, но все они дали мне синтаксические ошибки. Примеры:
for (int i = 0, i; i++) { /* ... */ }
for (int i = 0; !(i++)) { /* ... */ }
Что все приводит к ошибкам, аналогичным error: expected ‘;’ before ‘)’ token
при компиляции с использованием GCC (v4.9.2).
Я не уверен, правильно ли я интерпретирую стандарт. Может ли этот синтаксис использоваться каким-то полезным способом или я что-то пропустил?