a+=a-=(a=4)*(a=3);该式中a的值的变化与结果

碰到一很无语的题,网上没有详细回答,只是让我干掉出题人。

原题如下:

已知double a=5.2;则正确的赋值表达式是(  )

A、a+=a-=(a=4)*(a=3);                B、a=a*3=2;

C、a%3;                                       D、a=double(-3);

答案选A。

BCD错的太明显了,不赘述原题,我们讨论A这个式子的值:

我是这么分解的,a+=最后看,a-=次后看,首先看(a=4)*(a=3)这一部分的值与a的值;

很容易认为a-=(a=4)*(a=3)就是a=a-12=3-12=-9.000000,很可惜,这是网上普遍的错误。

实际上,根据赋值表达式的定义“赋值表达式的结果是最左边的赋值运算符(最左边的等号)左边的变量(或者表达式)的值

重新计算,首先根据优先级计算括号内的表达式,a被赋4,a又被赋3,然后计算乘法表达式,根据定义,a=4这个表达式的值为等号左边的变量即a的值,为3

也就是说,a-=(a=4)*(a=3)实际的运算过程为a=a-9=3-9=-6.000000

合起来一起看,a+=a-=(a=4)*(a=3)过程为a=a+(-6)=-6-6=-12.000000

想出这样的式子的人的想法我们不得而知,不过我们熟悉了估值表达式的定义。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部