c语言中关于自加和自减的问题

我电脑物理机是win8.1,我用的是虚拟机,虚拟的镜像是windowsXPsp3,visualc++6.0,*******************************... 我电脑物理机是win8.1,我用的是虚拟机,虚拟的镜像是windowsXP sp3,visual c++6.0,

*******************************************
#include <stdio.h>
main()
{int a=6,b=12,c=34;
printf("%d\n",a=(++a)+(++a));
printf("%d\n",a);
return(0);
} //结果是16和16
****************************************
#include <stdio.h>
main()
{int a=6,b=12,c=34;
printf("%d\n",a=(++a)+(++a)+(++a));
printf("%d\n",a);
return(0);
}//结果是25和25
********************************
为什么第二个的输出结果不是24和24,不知道结果的不要出来乱回答,也别跟我说什么编译器不同会导致结果不同,对c语言有一定了解的同学来回答一下
展开
 我来答
austgh
2015-04-13 · TA获得超过317个赞
知道小有建树答主
回答量:471
采纳率:0%
帮助的人:331万
展开全部
a=(++a)+(++a));等价++a;++a;a=a+a;
++a,a=a+1,a=7,++a,a=a+1,a=8,a=a+a=8+8=16,所以a=16,
25的我先验证一下
a=(++a)+(++a)+(++a));等价++a;a=7;++a,a=8;x=a+a=16,++a;a=9;a=x+a=16+9=25
加法再设计上,为两个寄存器,x,y,运算规则把x里存的数加y里存的数的和放在x中,所以每次之能两个两计算,(寄存器成本比较高)可参照计算机组成原理
给赞哦!!!
驭梦啦啦
2015-04-13
知道答主
回答量:21
采纳率:0%
帮助的人:12.6万
展开全部
你输出printf("%d,%d",(++a),(++a))你就明白了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式