在for循环中增加内部计数器变量

时间:2014-01-13 02:18:27

标签: c for-loop

所以,这就是问题:我可以在i循环内增加for变量吗?:

for(int i = 0; i < 1000; i++)
{
    i++; // is this legal? if not what is the alternative?
}

2 个答案:

答案 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
   }      
}

这是有效的代码,但如果您手动翻译,则可能不会以这种方式编写代码。