C++ cout输出顺序问题

我在编译器里写了下面这些代码

 int a[3]={1,2,3};
int *p=a;
cout<<p[0]<<endl
       <<*(p++)<<endl;
输出是这样的
2
1
想半天没想明白
然后我换了一下代码
int a[3]={1,2,3};
int *p=a;
cout<<p[0]<<endl;
cout<<*(p++)<<endl;
然后输出是
1
1

难道cout在输出时是从后面往前面计算,然后再从前往后输出吗?

5个回答

这个顺序是不可预测的,标准没有规定是如何,可以任意的顺序
http://stackoverflow.com/questions/7718508/order-of-evaluation-of-arguments-using-stdcout

p是指针,带星号的,这里显示不出来

知道了,谢谢,编译器计算顺序问题

你的第二行有问题吧?a可以是任何的书付给*g吧?

立即提问