+ -
当前位置:首页 → 问答吧 → 关于cout

关于cout

时间:2010-09-12

来源:互联网

本帖最后由 stone421 于 2010-09-12 13:38 编辑

#include <iostream>
using namespace std;

class A
{
public:
        int m_val;
        A(int b):m_val(b){}
        int& getval(){return m_val;}
protected:
private:
};

int main()
{
        A a(4);
        cout<<a.m_val<<" "<<a.getval()++<<" "<<a.m_val<<endl;
        return 0;
}

在vc6.0下 5 4 4
在dev 下 5 4 5
谁能帮我解释一下这个输出顺序是怎么来的呢? 谢谢!

作者: stone421   发布时间: 2010-09-12

程序没错吧,会有5?

作者: hellioncu   发布时间: 2010-09-12

有5正常的,它使用的是引用。
cout的计算顺序是未定义的,无须花费精力在这个上面。
不过可以猜测一下,VC是从右到左计算的
GCC看不出来,楼主可以看看汇编代码。

作者: insnowind   发布时间: 2010-09-12

相关阅读 更多