永发信息网

一个简单的C++程序

答案:2  悬赏:40  手机版
解决时间 2021-05-19 01:28
  • 提问者网友:謫仙
  • 2021-05-18 01:15
#include <iostream.h>
void main()
{ int a[]={2,4,6,8,10};
int *p=a;
int i;
p=a;
cout<<(*p)++<<*(p++)<<endl;
for(i=0;i<5;i++)
cout<<a[i]<<" ";
}
输出的结果为什么是
42
2 5 6 8 10
最佳答案
  • 五星知识达人网友:逐風
  • 2021-05-18 01:32
如果不拆开cout,道理是一样的,只不过
cout<<(*p)++<<*(p++)<<endl;
这一句,是先计算括号里内容(即,先计算*p和p++),再计算*(p++),再计算(*p)++。

初始p为a[0]的地址,(*p)为2,然后p++之后p指向a[1],输出4,然后a[1]++,a[1]变成5,输出2。

因此结果是
42
2 5 6 8 10

拆开cout那么结果为:
23
3 4 6 8 10 Press any key to continue




1
全部回答
  • 1楼网友:有你哪都是故乡
  • 2021-05-18 03:04
不同编译器结果不一样的,这个没必要在意,也没有研究的价值
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯