【发布时间】:2017-03-13 01:42:17
【问题描述】:
有人能解释一下为什么这段代码会输出 10 吗?当我尝试分析它时,我的逻辑给出了结果 11。
#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;
}
【问题讨论】:
-
欢迎来到 Stack Overflow。请花时间阅读The Tour 并参考Help Center 中的材料,您可以在这里问什么以及如何问。
-
调试器是解决此类问题的正确工具。 在询问 Stack Overflow 之前,您应该逐行浏览您的代码。如需更多帮助,请阅读How to debug small programs (by Eric Lippert)。至少,您应该 [编辑] 您的问题以包含一个重现您的问题的 Minimal, Complete, and Verifiable 示例,以及您在调试器中所做的观察。
-
也许读过Sequence Points。
-
@πάνταῥεῖ 它确实包含一个 MCVE。
-
@M.M 嗯,这是一个股票评论,包括 OP 错过的可能性。不过,我仍然没有在问题中看到任何调试工作。