我一直在使用VS 2013社区学习C ++入门。 当我测试以下两个程序时。我很困惑因为我认为输出应该是同样的东西。为什么结果不同? 第一个如下。
#include "stdafx.h"
#include<iostream>
#include<vector>
using std::vector;
using std::cout;
using std::cin;
using std::endl;
int main()
{
vector<int> ivec(10,0);
vector<int>::size_type cnt =ivec.size();
for (vector<int>::size_type ix = 0; ix != ivec.size(); ++ix)
{
--cnt;
ivec[ix] = cnt;
cout << ivec[ix] <<" "<<cnt<< endl;
}
return 0;
}
第二个程序如下。
#include "stdafx.h"
#include<iostream>
#include<vector>
using std::vector;
using std::cout;
using std::cin;
using std::endl;
int main()
{
vector<int> ivec(10,0);
vector<int>::size_type cnt =ivec.size();
for (vector<int>::size_type ix = 0; ix != ivec.size(); ++ix, --cnt)
{
ivec[ix] = cnt;
cout << ivec[ix] <<" "<<cnt<< endl;
}
return 0;
}
答案 0 :(得分:7)
像
一样的for
循环
for (a; b; c)
{
d;
}
等同于以下
a;
while (b)
{
d;
c;
}
那么c
部分中发生的事情是在循环体完成后完成的。
在第二种情况下,{/ 1}}表达式在之后发生,而在第一种情况下,--cnt
在之前发生。