为什么"for(; i <= 10; i ++)"工作但"for(i = 0; i <= 10 ;;)"不是?

Mea*_*ead -2 c expression for-loop

为什么第一个程序不起作用,但第二个程序不起作用?我的意思是,第二个程序给出了错误

"'之前的预期表达';'"

但是为什么然后它不会给"for(; i <= 10; i ++)"同样的东西,因为第一个表达式也缺失了?不是";;" 在第二个程序的"for(i = 0; i <= 10 ;;)"中表示空白表达式?最后,为什么"for(i = 0; i <= 10;)"在删除第二个分号后才起作用?

//Program 1
#include<stdio.h>

int main()
{
int i=1;
for(;i<=10;i++)
{
printf("%d\n",i);
}
}

//Program 2
#include<stdio.h>

int main()
{
int i;
//for(i=1;i<=10;) // This works but following doesn't
for(i=1;i<=10;;) 
{
printf("%d\n",i);
i++;
}
}
Run Code Online (Sandbox Code Playgroud)

hac*_*cks 12

for(i=1;i<=10;;)不是有效的C语法.forC中的循环语法是

for ( expressionopt ; expressionopt ; expressionopt ) statement
for ( declaration expressionopt ; expressionopt ) statement  
Run Code Online (Sandbox Code Playgroud)

请注意,即使我们省略了一些表达式,也必须始终存在两个分号.

  • 只有两个分号进入for语句. (4认同)