int i = 7, j = 3;
int *a = &i, *b = &j;
cout << (*a = *b) << ", " << *(*(&a));
有人可以解释为什么输出3,7?
答案 0 :(得分:6)
您的代码可以简化:
int i = 7, j = 3;
cout << (i = j) << ' ' << i;
此处变量i
在同一语句中被访问和更改。由于在C ++标准中没有指定同一语句的不同部分的评估顺序,编译器可能以任何顺序计算它们,并且结果可能在不同的编译器(甚至同一编译器的不同版本或不同的运行版本)上有所不同相同源代码上的相同编译器,或者甚至同一编译程序的不同运行。)
不要在一个声明中编写更改和访问内容的代码。