~有关指针的有关问题

求助~有关指针的问题

double* pdata(nullptr);
double data[5] = {1,23,34};
pdata = &data[2];
cout << data[2] << " " << data[3] << endl;
cout << *pdata << " " << *(pdata++) << endl;


为什么输出的是 
34 0 
0 34
呢?求解~
c++

------解决方案--------------------
cout<< 是调用了 cout对象的 operator<< 函数
可以转换为这个形式 operator<< (operator<<(cout, *pdata), *pdata++) //
这里 operator<<的参数operator<<(cout, *pdata)先求值还是 参数*pdata++先求值是不明确的

然后 不同的求值顺序又会导致不同的结果 


------解决方案--------------------
引用:
但是为什么先输出data[4]的值,后输出data[3]的值呢?
有点太匪夷所思了。

倒也不至于匪夷所思 
只要 operator<< (operator<<(cout, *pdata), *pdata++)
这里参数*pdata++先求值 得到的是第3个元素的值 
然后是operator<<(cout, *pdata)的求值 
这时候 已经完成了++操作 pdata指向第4个元素

那么结果就会是 0 34