所以,这就是问题:我可以在i
循环内增加for
变量吗?:
for(int i = 0; i < 1000; i++)
{
i++; // is this legal? if not what is the alternative?
}
答案 0 :(得分:4)
绝对合法但不太直观。
如果您需要以这种方式操纵循环,请考虑使用while循环(这只是代码清晰度,而不是合法的东西)。
答案 1 :(得分:3)
如果我们查看C99草案标准,则会在6.8.5.3
部分中说明 for 循环以下内容:
声明
for(clause-1; expression-2; expression-3)statement
表现如下:表达式表达式-2是控制表达式 在每次执行循环体之前进行评估。表达式-3表达式为 在每次执行循环体后评估为void表达式。如果第1条是a 声明,它声明的任何标识符的范围是声明的剩余部分 整个循环,包括其他两个表达式;它是按执行顺序到达的 在第一次评估控制表达之前。如果子句-1是表达式,那么它是 在第一次评估控制表达之前评估为空表达。 137)
因此,如果我们解析此文本, for 循环将大致相当于以下内容:
{
int i = 0 ; // clause 1
while( i < 1000 ) //expression 2
{
i++ ; // statement
i++ ; // expression 3
}
}
这是有效的代码,但如果您手动翻译,则可能不会以这种方式编写代码。