int arr[]={6,7,8,9,10}; int *ptr=arr; *(ptr++)+=123; printf("%d,%d",*ptr,*(++ptr)); 求答案和原理

 我来答
百度网友268462626
2012-07-20
知道答主
回答量:19
采纳率:0%
帮助的人:12.4万
展开全部
答案是:8,9
原理:*ptr=arr,所以ptr=6;
*(ptr++)+=123,先执行 *(ptr++),则 *(ptr++)=arr[0]即6,,此时*ptr=arr[1],然后执行 6+123=129,此时*ptr=arr[2]即8;
*(++ptr)相当于先执行++ptr,则相当于输出arr[3]即9.
icepointfirst
推荐于2018-03-14 · TA获得超过304个赞
知道小有建树答主
回答量:214
采纳率:0%
帮助的人:231万
展开全部
结果:

8,8
int *ptr=arr;
*(ptr++)+=123; //这里运行后,ptr = arr[1], arr[0] = 129

printf("%d,%d",*ptr,*(++ptr)); //这里先计算++ptr,ptr =arr[2], 所以相关于
printf("%d,%d",arr[2],arr[2]);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小空空3492
2012-08-31
知道答主
回答量:6
采纳率:0%
帮助的人:9754
展开全部
前几句都很简单,只说printf那一步
在printf前,*ptr = 7
执行printf:在VC中,printf执行的顺序是自右向左,所以先执行*(++ptr)。。。。。。
所以结果是:8,8
外加一条:printf在不同的编译环境下运算的顺序是不同滴~~~~~所以结果不一样也正常
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友1cf58ab
2012-07-20 · TA获得超过343个赞
知道小有建树答主
回答量:276
采纳率:50%
帮助的人:374万
展开全部
答案:8,8
int arr[]={6,7,8,9,10};
int *ptr=arr;
// arr[0]+=123
*(ptr++)+=123;
// 上一语句中,ptr 已经转向arr[1]
printf("%d,%d",*ptr,*(++ptr));
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sun_siliang
2012-07-20 · TA获得超过2.6万个赞
知道大有可为答主
回答量:9913
采纳率:100%
帮助的人:4920万
展开全部
在vc++ 2005下测试,结果为:
8,8

printf("%d,%d",*ptr,*(++ptr)); 这个语句有二义性,在不同编译系统下,结果可能不同。没必要究结。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式