'对于'的索引总和环

时间:2016-05-01 19:54:48

标签: c++ loops for-loop

为什么这些代码段会产生不同的结果?我知道第一个是正确的,但在第二种情况下会发生什么?

示例1

int i=0;
for(;i<5;i+=3){i=i*i;cout<<i;}
cout<<i;

输出:

  

0

     

9

     

12

示例2

for (int i =0; i<5; i+=3){i=i*i;cout<<i}
cout << i;
  

输出:

     

0

     

9

     

9

2 个答案:

答案 0 :(得分:2)

当你写:

for(int i=0;i<5;i+=3){i=i*i;cout<<i;}
cout<<i;

最后一个输出是指在你的for循环之前声明的另一个i变量(我们可以告诉你,因为你没有发布这部分代码,它甚至可能是一个全局变量......谁知道)。所以无论你在cout<<i之前做什么循环,最后的输出都会保持不变。

为了说服你,更改你的循环变量名称和范围(例如写for(int k=0;k<10;k+=2){k=k*k;cout<<k;}),你会发现它不会改变最后的输出。

答案 1 :(得分:1)

在第二个版本中,您甚至无法访问i,因为它的范围是for循环。

最有可能的问题是你宣布了第二个变量i,然后在第二个片段中打印出来。

相关问题