关于C ++中的输出

时间:2016-12-19 09:10:15

标签: c++ output cout

int i = 7, j = 3;
int *a = &i, *b = &j;
cout << (*a = *b) << ", " << *(*(&a));

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

1 个答案:

答案 0 :(得分:6)

您的代码可以简化:

int i = 7, j = 3;
cout << (i = j) << ' ' << i;

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

不要在一个声明中编写更改和访问内容的代码。