问题描述
#include <iostream>
using namespace std;
class A {
public:
A() { a.a = a.b = 1; }
struct { int a,b; } a;
int b(void);
};
int A::b(void) {
int x=a.a;
a.a=a.b;
a.b=x;
return x;
};
int main(void) {
A a;
a.a.a = 0;
a.b();
cout << a.b() << a.a.b << endl;
return 0;
}
我目前正在练习C ++认证,因此遇到了这个问题。我发现奇怪的是,在提示之后,如果我只打印aab值,它会打印1,但是代码本身显示10,所以aab的值被认为是0。根据我在网上所做的研究,似乎这是未定义的行为,因为不能保证在cout调用中,编译器将首先评估ab()调用,然后评估aab值。
在此cout中,编译器是否应按确定的顺序计算表达式?解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)