Java题:设 x = 1 , y = 2 , z = 3,则表达式 y+=z--⼀++x 的值是多少?(注:题上没说x,y,z类型)

2025-05-09 22:16:11
推荐回答(2个)
回答1:

这种题, 出题的人真是差劲,
1.这么复杂的表达式,适合在C语言中出现
2.如果在java中出现,考虑的一般就是int double(转型问题),简单的就行了,需要自增有自检么?
直接 y += z / x 就得了呗....
3.可怜的孩子们,都被这种绕来绕去的题目 转蒙了.

需要考虑的类型无外乎 int double (short, long ,float 不用考虑,这两个足够表示了)
4. 表达式右侧
z--/++x <==> 3 / 2
1) 如果 z ,x 都为 int 结果为 1
2) 如果 z, x有一个为double, 结果为1.5

5. 表达式左侧
最终结果的类型取决于y的类型
1) y 为 int 结果为 2 + (1或者1.5) = 3
2) y 为 double 结果
1)) 右边是1的时候 结果为 2.0 + 1 = 3.0
2)) 右边是1.5的时候 结果为 2.0 + 1.5 = 3.5

回答2:

按照优先级来分别计算这几个表达式的值,y+=z--/++x
相当于:z-- ; //z 使用 后-1,也就是说用来除的时候z=3
++x; //x 加1 此时x=2
z/x =3/2=1(任何一个为整形), =1.5 全为浮点型
y += z/x ; 即 y+=1(或1.5);
执行完这一句 y=3(3.5);
所以 此时
x=2
y=3(3.5)
z=2