c语言 帮我分析个程序

来源:百度知道 编辑:UC知道 时间:2024/06/17 14:16:51
main()
{ int a=40,b=20,x,y;
x=(--a)-(--b);
y=(a--)-(b--);
printf("%d,%d\n",a,b);
printf("%d,%d\n",a+1,b-1);
printf("%d,%d\n",a++,b--);
printf("%d,%d\n",++a,--b);
printf("%d,%d\n",+a++,-b--);
printf("%d\n",x);
printf("%d\n",y);
}

结果我有 但是我不明白结果是怎么来的 因为我自己做的和运行的结果 不一样 所以我要分析
只要分析对的 分数少不了 100分

其实明白以下的,以后这样的问题就能解决
++a ,--a是在使用a之前,先把a加(减)1
a++,--a是在使用a之后,把a的值加(减)1
a=1时 ,b=a++意思是把取得a的值,即b=1,之后a在加1,a变成了2
a=1时,b=++意思是先使a加1,a变成了2,之后再取a,b就等于2了。
b=a++,b=++a意思都是取a的值关键是在a加1之前取的还是之后不管怎么的a都加1了

main()
{ int a=40,b=20,x,y;
x=(--a)-(--b);
//此时(--a)的值是39 ,a的值也是39,(--b)的值是19,b的值也是19, x =20
y=(a--)-(b--);
此时a--的值为39,而a的值为38,b--的值为19,而a的值为18,y=20
printf("%d,%d\n",a,b);
printf("%d,%d\n",a+1,b-1);
printf("%d,%d\n",a++,b--);
printf("%d,%d\n",++a,--b);
printf("%d,%d\n",+a++,-b--);
printf("%d\n",x);
printf("%d\n",y);
}

首先在执行x=(--a)-(--b);这语句之前,做a,b自减,a=39,b=19,然后执行y=(a--)-(b--);语句,之后a,b自减,a=38,b=18.所以a,b打印出来的值就是38,18;a+1=39,b-1=17;执行这个语句printf("%d,%d\n",a++,b--); 的时候,a=38,b=18,执行之后再执行a自加,b自减,这时候a=39,b=17,然后执行下一个语句,a=40,b=16.接着执行printf("%d,%d\n",+a++,-b--)