首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

c++表达式求值与输出顺序解决思路

2013-03-21 
c++表达式求值与输出顺序primer上有个题,编码如下:vectorstring*::iterator iter spvec.begin()while

c++表达式求值与输出顺序
primer上有个题,编码如下:

vector<string*>::iterator iter = spvec.begin();
while (iter!=spvec.end()) {
cout << **iter << (**iter).size() << endl;
iter++;
}

这样可以输出每个string的内容和长度。
我想将循环里面的表达式简写为只有一行的,就这样试了:

        vector<string*>::iterator iter = spvec.begin();
while (iter!=spvec.end()) {
cout << **iter << (**iter++).size() << endl;
//iter++;
}

结果越界了,我这样改了以后
vector<string*>::iterator iter = spvec.begin();
while (iter!=spvec.end()) {
cout << **iter++ << (**iter).size() << endl;
//iter++;
}

得到的结果就与上面第一次相同,也就是简化的目的到达了。
我的问题是,为什么那个自增运算不是像第二段代码中那样放到后面来简化,怎么样理解第三段代码?
[解决办法]
不要写这种有平台依赖性的代码,不同的编译器可能有不同行为
[解决办法]
看看置顶帖吧,这样的问题不用纠结。如果遇到拿不准优先级的就加上括号。

热点排行