我在C标准文本中遇到过这个问题,我可以在§6.8.5找到C99或C11的任何版本:
iteration-statement:
while ( expression ) statement
do statement while ( expression ) ;
for ( expression ; expression ; expression ) statement
for ( declaration expression ; expression ) statement
Run Code Online (Sandbox Code Playgroud)
这里的第四项似乎for只有一个分号,我在其他地方看不到任何对这种语法的引用.谁能在这里解释我错过了什么?
for ( declaration expressionopt ; expressionopt ) statement
Run Code Online (Sandbox Code Playgroud)
for循环的第二种语法只有一个分号,但每当我尝试使用它时,它会产生一个错误,说:
error: expected `;` before `)` token
Run Code Online (Sandbox Code Playgroud) 有没有理由在c中写这样的for-loop?(第一个语句留空,高度设置在外面而且......高度变量在其他地方之后也没用过)
lastheight = halfheight;
.
. // some more code changing height, includes setting
. // lastheight
. // to something that is essentially the height of a wall
.
height = halfheight;
for ( ; lastheight < height ; lastheight++)
Run Code Online (Sandbox Code Playgroud)
它是从Wolfenstein3D源代码中引用的.