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

如题所述

这种题, 出题的人真是差劲,
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
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-06
按照优先级来分别计算这几个表达式的值,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来自:求助得到的回答
第1个回答  2013-01-06
如果是整型变量
表达式的值就是y最后的值。
答案应该是3,需要注意的就是两个整型数相除的时候,结果还是整型,小数部分被截掉了

这样的题说实话,没有太大的意义,真正在做项目写程序的时候,如果用上这样的表达式,估计得被领导开除,哈哈。
第2个回答  2013-01-06
这道题主要考你java的8种基本数据类型,
1.byte(字节) 2.shot(短整型) 3.int(整型)4.long(长整型)5.float(浮点型) 6.double(双精度)7.char(字符型) 8.boolean(布尔型)
本人以为这道题主要取决于y的类型,
(1)如果y的类型是byte,shot,int,long,则x=2,y=3,z=2,因为会舍掉小数部分
(2)如果y的类型是float,double,则x=2,y=3.5,z=2,会保留小数部分
(3)如果y的类型是char,则会按照asc码进行输出
第3个回答  2013-01-06
这x=1,y=2,z=3 ,根本通不过编译,如果勉强说成int x = 1 , y = 2 , z = 3; 这题还有的做,或者double,float都行
int 表达式的值为3
double 3.5
float 3.5
他可能考的就是+=,++,--的问题,看一下算术符优先表,记得++在后面就先算值后加,在前面就先加后计算。
相似回答