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语言有一定了解的同学来回答一下 展开
*******************************************
#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语言有一定了解的同学来回答一下 展开
2个回答
展开全部
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中,所以每次之能两个两计算,(寄存器成本比较高)可参照计算机组成原理
给赞哦!!!
++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中,所以每次之能两个两计算,(寄存器成本比较高)可参照计算机组成原理
给赞哦!!!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询