long和short并不会自动转换最终到底得到的表达式是什么类型

50.关于表达式(5/’A’+3L/2+(short)3.14/2),下面说法正确的是
(A) 表达式最终结果是float型
(B) 表达式最终结果是int型
(C) 表达式最终结果是double型
(D) 表达式最终结果是long型

A 和 C肯定不对,不会是浮点型。
3L表示为long型,那么应该选D

A和C不对,原因就是字符‘A’的ASCII码数值是65。char自动转成int类型,两个int类型相除肯定为int类型,所以A,C不对,不可能为其他类型
3L/2 很明显3L代表3是Long类型,除int类型,int会先进行类型自动提升为long,结果可想而知就是long类型
(short)3.14/2 这个你再看看,仔细看看,short只管3.14,2还是int类型,和上面3L/2是一个道理,如果你想让整体为short类型,就必须这样写(short)(3.14/2),所以short类型除int类型,short类型自动提升为int,最后结果就是int类型


所以表达式就是 int+long+int,两种类型可以彼此兼容的情况下,低类型的会像高类型自动提升,所以最后就是long类型,答案就是D,明白了吗^_^