Почему оно должно быть действительным? Это синтаксически бессмысленное противоречие. Что ты пытался сказать этим?
Первая часть заголовка for
является объявлением.
int i = 0, int x = 0
не является действительной декларацией. Он не будет компилироваться в for
по той же причине, по которой он не будет компилироваться где-либо еще в программе
int i = 0, int x = 0; // Syntax error
Когда вам нужно объявить два объекта типа int
в одном объявлении, вы делаете это следующим образом
int i = 0, x = 0; // OK
То же самое можно использовать в for
for( int i = 0, x = 0; some condition; ++i, ++x )
(Но когда вам нужно объявить две переменные разных типов, это не может быть сделано одним объявлением и, следовательно, оба не могут быть объявлены в for
одновременно. один из них должен быть объявлен до for
.