在JAVA中 i=3,j=2,k=1, k-=i++/++k-i*j--+j*k的值为多少? 为什么

来源:百度知道 编辑:UC知道 时间:2024/05/26 18:08:52
还有k-=++i/++k-i*--j+j*k

首先我们必须知道,在运算过程中,等号左边和右边是不同的,右边的运算不影响左边,所以,在右边那一串运算的时候,左边这个k一直是初值1
你可以做个简单实验,
k=1
k=k++;
那么结果一定是1. 当然如果k=++k 就是2了。

现在看题目
i=3,j=2,k=1,

k-=i++/++k-i*j--+j*k
在运算过程中是这样的,注意在等式右边java中是从左到右的。
k-=(i++/++k)-(i*j--)+(j*k);
1 - = (3/2)-(4*2)+(1*2)
k = 6;

i=3,j=2,k=1,
k-=++i/++k-i*--j+j*k
1-=4/2-4*1+2*1
k=1;

在运算中,等式右边也是有从左到右或从右到左的顺序的,尤其以前不同的编译器在不同的环境下。当然现在java既然是跨平台的。应该都是一样的。

最后总结一下,这个问题,或者说这种类型的问题,我个人觉得相当教条。环境就是这样设定的,在运算过程中,寄存器中就是这样存储的。
我觉得你不用深入研究。 只需了解k在等式左右是不同的就行了,我想没有哪个技术总监想看到小弟写出这种代码的。:)

1、k=6
2、k=1

我在环境中就是用int类型的,根本没报错.

第一个,如果k为int类型会报错,因为i++/++k为3/2
如果k不是int型,k=3/2-4*2+1*2,即4.5

第二个,如果执行前i=3,j=2,k=1,就是k=4/2-4*1+1*2,即0

t546544