一个很诡异的发现

kankan1986 2008-10-05 02:26:19
#include<iostream>
using namespace std;

void main()
{
int a[]={1,2,3,4,5,6,7,8,9,10};
int *p=a;
cout<<*p<<p<<endl;
p+=2;
cout<<*p<<p<<endl;
cout<<*(p++)<<p<<endl
<<*(p++)<<p<<endl;
}

输出的却是 10012FF58
30012FF60
40012FF64
30012FF60

按着理论,我认为应该是 10012FF58
30012FF60
30012FF64
40012FF68
谁能解释一下?
...全文
53 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
帅得不敢出门 2008-10-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 kkndciapp 的回复:]
cout是从右边,到左边计算的,没有什么诡异的
[/Quote]
up
jia_xiaoxin 2008-10-05
  • 打赏
  • 举报
回复
这跟cout的出栈顺序有关,是先从后往前计算的。
kkndciapp 2008-10-05
  • 打赏
  • 举报
回复
cout是从右边,到左边计算的,没有什么诡异的

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧