为什么第一个程序不起作用,但第二个程序不起作用?我的意思是,第二个程序给出错误
"在';'"
之前的预期表达
但是为什么它不会为"(?i< = 10; i ++)" 提供相同的内容,因为第一个表达式也缺失了?不是&#34 ;;;" " 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++;
}
}
答案 0 :(得分:12)
for(i=1;i<=10;;)
不是有效的C语法。 C中的for
循环语法是
for ( expressionopt ; expressionopt ; expressionopt ) statement
for ( declaration expressionopt ; expressionopt ) statement
请注意,即使我们省略了某些表达式,也必须始终存在两个分号。
答案 1 :(得分:4)
for
语句循环由以分号分隔的三个子句组成。因此它应该只有两个半冒号,第三个导致语法错误。这三个部分具有以下含义:
这些步骤中的每一步都可能为空,但即使正好两个分号也应该将这些部分分开。
答案 2 :(得分:2)
&#34; for&#34;结构设置为有3个部分: - 实例化迭代的变量,迭代的时间,以及更新变量(增量,减量或其他)。
for(int i=0; i<10; i++)
所以当你有下面的循环时,你有4个部分,这对于&#34; for&#34;循环。(部分由半冒号分隔。)另一个错误但语法正确,因为它有3个部分。
for(i=1;i<=10;;)
答案 3 :(得分:1)
For循环包含三个条件
- 初始化,
- 迭代条件,
- 增量。
第一个条件也可以在循环之前声明,如
Int i=0;
for(;i<10;i++)
{
}
增量也可以在循环中声明
for(i=0;i<10;)
{
i++;
}
迭代的条件应该在循环中确定 但是你的循环包含语法,好像有四个条件(3个分号)。所以它不被C编译器识别。如果你删除额外的分号,它将起作用。
答案 4 :(得分:0)
这只是一个语法错误。
正确的C语法是:
for( exp11, .., exp1N; exp21, .., exp2N ; exp31, .., exp3N) { }