![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
int a=12; a+=a-=a/=a*=a; 最后a的值到底是多少?
首先声明整个是Java的执行代码intk=12;k+=k-=k/=k*=k;System.out.println(k);//计算结果为24----------------...
首先声明整个是Java的执行代码
int k=12;
k+=k-=k/=k*=k;
System.out.println(k); //计算结果为24
----------------------------------------------------------------------
问题:如何计算?如何实现这个问题?就是每一步的计算结果及k值的变化 展开
int k=12;
k+=k-=k/=k*=k;
System.out.println(k); //计算结果为24
----------------------------------------------------------------------
问题:如何计算?如何实现这个问题?就是每一步的计算结果及k值的变化 展开
1个回答
2018-06-13 · 知道合伙人互联网行家
关注
![](https://wyw-base.cdn.bcebos.com/pc-content/follow.gif)
展开全部
-264;
先执行a*a=144;
然后a=a-144;
此时a=-132;
再执行a=a+(-132);
a=-264
(以上为gcc编译结果纳袭)
我测试了在java中结果不是这样的,这个与具体底层实现是有关系的让空,有些编译器执行的时候a的值一直是12;有坦茄瞎些就在运行过程中修改了
先执行a*a=144;
然后a=a-144;
此时a=-132;
再执行a=a+(-132);
a=-264
(以上为gcc编译结果纳袭)
我测试了在java中结果不是这样的,这个与具体底层实现是有关系的让空,有些编译器执行的时候a的值一直是12;有坦茄瞎些就在运行过程中修改了
追问
今天咨询了下,
给出了如下答案:
我们可以把k+=k-=k/=k*=k;看成整个表达式的结果值给最左边的k赋值,
所有在计算整个表达式的过程中,右边所有k的值不变
只有整个表达式的结果值得出之后,最左边的k才会再次被赋值
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询