关于C语言计算的两道题目.自加自减,了解的帮忙解答下~

问题描述:

关于C语言计算的两道题目.自加自减,了解的帮忙解答下~
#include #include
main() main()
{ {
int a=6,b=0; int a=6,b=0;
b=(++a)*(--a); b=(++a)*(a--);
printf("%d %d\n",a,b); printf("%d %d\n",a,b);
} }
这两题计算结果好奇怪.懂的详细说下.谢谢~
1个回答 分类:综合 2014-11-16

问题解答:

我来补答
36 49不是讲的很清楚么.a++是语句计算结束改变值.++a是改变值后参与语句计算.有啥好纠结的
再问: 36是怎么出来的?比如b=(++a)*(--a);a首先自加1,变为7,然后再--a,变为6.结果是7*6=42吧。为什么得出36?
再答: 变量都是引用的内存中的值.只不过先计算后计算的关系.两个变量运算是先把变量对应的地址中的值改变再引用值参与计算.比如2个人用同一个存钱罐存钱,A向里存了1块,B向里拿出一块.然后计算两个人存钱数的积.因为变量没有变,内存地址也没有变.即使说++a是内存值加到7,但是并没有参与运算.等到参与运算a所对应的内存值又变成6了.不知道这么说你能不能理解.第二个同样
 
 
展开全文阅读
剩余:2000