为什么这些代码段会产生不同的结果?我知道第一个是正确的,但在第二种情况下会发生什么?
示例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
答案 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
,然后在第二个片段中打印出来。