关于C++中的输出

Ned*_*Ned 1 c++ cout output

int i = 7, j = 3;
int *a = &i, *b = &j;
cout << (*a = *b) << ", " << *(*(&a));
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么输出3,7?

ale*_*in0 6

您的代码可以简化:

int i = 7, j = 3;
cout << (i = j) << ' ' << i;
Run Code Online (Sandbox Code Playgroud)

这里变量i在同一语句中被访问和更改.由于在C++标准中没有指定同一语句的不同部分的评估顺序,编译器可能以任何顺序计算它们,并且结果可能在不同的编译器(甚至同一编译器的不同版本或不同的运行版本)上有所不同相同的源代码上的相同编译器,或甚至同一编译程序的不同运行).

不要编写在一个语句中更改和访问某些内容的代码.