int a[5]={1,2,3,4,5},*p; p=a; printf("%d %d",*p,*(p++)); 为啥输出为1 1

printf在vc6.0中不是自右向左执行的吗... printf在vc6.0中不是自右向左执行的吗 展开
 我来答
金色潜鸟
推荐于2018-05-04 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5604万
展开全部
因为 *(p++) 用的是 后缀加加,按规定,在表达式内不自增,出了表达式后再自增。
所以:
printf("%d %d",*p,*(p++));
就等于:
printf("%d %d",*p,*(p));
输出 1 1
再执行 p=p+1; (地址增 1*sizeof(int) ).
----------
你可以打印地址,看p指向的地址变化
printf("%p\n",p);
printf("%d %d\n",*p,*(p++));
printf("%p\n",p);
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式