【问题标题】:c programme for loop: execution sequence [duplicate]c程序for循环:执行顺序[重复]
【发布时间】:2014-05-29 12:25:03
【问题描述】:

下面的代码很简单,我想知道的是++counter的执行时间。我知道对于 for 循环,count 是要检查的第一个条件,但是对于 ++counter 的执行时间我'我不太确定。第 1、2 或 3 行,哪个是执行增量的地方?

#include <stdio.h>

int main()
{
int counter;
/* counter for loop */

for (counter = 0; counter < 5; ++counter) {  // 1
printf("x %d\n", counter+1);  // 2
} //3
return (0);
}

结果是

x 1    
x 2    
x 3    
x 4    
x 5    

【问题讨论】:

  • 您显示的结果与您发布的程序不兼容。
  • 您获得的结果以及该增量运算符上可用的信息可以很容易地告诉您什么时候会发生什么。我不明白你的问题。

标签: c for-loop


【解决方案1】:

我没有得到X 0++counter Ideone Output

并且 ++counter 的位置不会影响 X 值的变化,因为 for 循环的检测是在一个循环执行之后完成的(假设表达式为真)

查看此链接以获取有关 for 循环 Loops 的教程

【讨论】:

  • 我的错。我尝试了不同的版本并得到了几个结果并将它们混合在一起。第一个元素始终为 1。并感谢您的循环教程。很清楚!
【解决方案2】:

++counter 在 printf("x %d\n", counter+1); 之后执行在每次迭代中。

【讨论】:

    【解决方案3】:

    归结起来,一个 for 循环可以转换为一个 while 循环,如下所示:

    for (initialization,condition,iteration)
    {
        //code
    }
    
    initialization
    while(condition)
    { 
        //code
        iteration
    }
    

    所以 i++ 或 ++i 在循环运行完后执行,然后检查条件是否再次运行循环。

    【讨论】:

      【解决方案4】:

      你可以解释下面的for循环

      for (variable initialization; ending condition; variable update) {
          // code
      }
      

      作为一个缩短的while循环

      variable initialization
      while(ending condition) {
          // code
          variable update
      }
      

      因此您的counter++++counter 在循环中的语句之后执行。

      公平地说,你想使用哪个增量,无论是后置还是前缀都没有关系。但是在性能方面,在某些情况下,前缀比后缀要快一些。有兴趣的可以参考this explanation

      【讨论】:

        猜你喜欢
        • 2023-03-18
        • 2020-04-09
        • 1970-01-01
        • 2021-08-09
        • 1970-01-01
        • 2020-02-12
        • 2017-02-22
        • 2018-03-24
        • 1970-01-01
        相关资源
        最近更新 更多