我不明白这个for循环是如何工作的c ++

时间:2016-10-07 02:42:59

标签: c++ loops iteration

#include <iostream>

using namespace std;

int main()
{
   int x = 0;
   for int (i=0; i<100; i++)
   if (i%9 == 0) x = i;
   else x = -1;
   cout << x;
   return 0;
}

这段代码返回值99。

当我逐行阅读时,我理解为这样。

  1. 声明变量x,为其赋值0.
  2. 对于i = 0,i小于100,将i递增1。
  3. 如果i / 9的余数等于0,则将i的值赋给x。
  4. 如果未将x设置为等于-1
  5. 打印x
  6. 在for循环的第一步中,i被赋值为0. 0除以9等于0,其中包含if语句的条件,那么为什么不打印出x等于0而不是99 ?

3 个答案:

答案 0 :(得分:2)

逐行

  

1)声明变量x;为它赋值0.

#include <iostream>
int main()
{
    int x=0;
}
  

2)对于i = 0i小于100,将i增加1。

#include <iostream>
int main()
{
    int x=0;
    for(int i=0; i<100; i++) {};
}
  

3)如果i/9的余数等于0,请将i的值指定为x

#include <iostream>
int main()
{
    int x=0;
    for(int i=0; i<100; i++)
    {
        if(i%9==0)
        {
            x = i;
        }
    };
}
  

4)如果没有设置,x应该等于-1:

#include <iostream>
int main()
{
    int x=0;
    for(int i=0; i<100; i++)
    {
        if(i%9==0)
        {
            x = i;
        }

        else
        {
            x = -1;
        }
    };
}
  

5)打印x

 #include <iostream>
int main()
{
    int x=0;
    for(int i=0; i<100; i++)
    {
        if(i%9==0)
        {
            x = i;
        }

        else
        {
            x = -1;
        }
    };
    std::cout << x << std::endl;
}
最后一个的

DEMO

参考更多C ++有趣活动

  

worldbestlearn

     

WikiBooks

     

course

答案 1 :(得分:0)

输出正确。每次循环时,x都会获得i的值或值-1。通过循环的最后一次,i == 99i % 9确实为0,因此为x分配值99。然后i获取值100,循环退出,程序的其余部分打印x的当前值,即99

请注意,if/elsefor循环的正文。由于i%9if为0,因此循环不会退出。

答案 2 :(得分:0)

只有for循环之后的单个语句在for循环中。请注意,if ... else ...是一个语句(包含其他语句)。

完全相同的代码应更好地写为:

int main()
{
   int x = 0;
   for (int i=0; i<100; i++)
   {
      if (i%9 == 0)
         x = i;
      else
         x = -1;
   }
   cout << x;
   return 0;
}

现在应该很容易理解为什么在循环结束之前没有打印任何内容。