工作亮点展示汇报材料:int a=2,b=3,c=4;a*=10+(b++)-(++c);执行完语句后a的值是多少?

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 08:17:56
假如是18的话,怎么解释
int a=12; a+=a-=a*=a的值是0

在TC2.0中执行的结果是a=16,原因是自加运算符++的位置对计算结果的影响,b++是先把b的值赋给表达式后再自加,++c是先自加再把值赋给表达式,所以a=(10+3-5)*2=16

int a=12; a+=a-=a*=a的值是0没有错,
a+=a-=a*=a的执行次序为
a=a*a=12*12=144
a=a-a=144-144=0
a=a+a=0+0=0

第二个,(a*=a)为144,执行后a也被赋值144,那么a-=144,就是0了,此时a已被赋值0。再执行a+=0还是0
第一个不知道为什么是18

<1>
a+=a-=(a=a*a)
a+=a-=(a=12*12=144) 注意a已经不是原来的a了,此时的a为144.
<2>
a+=(a=a-a)
a+=(a=144-144=0)注意a已经又不是原来的a了,此时的a为0.
<3>
a+=a
a=a+a=0+0=0
换成了18的话还是0.