定义变量byte b=20;
        short s=3000;
没问题,可是定义float f=30.00;就会有问题
不是说整型默认是int,浮点是double吗?那么为什么我定义的byte和short还能通过
编译并执行呢?不是要显示转型吗?
谢谢大家

解决方案 »

  1.   

    其实要加以区分的只有float和double这两种。一般你的浮点后面没有加上f后缀,编译器就会把它当作double处理,这是就要窄式转换。其他的就一般都不会区分。只有你的数值大于你的类型的范围时,才会区分。因为你的20和3000都没有大于byte和short的范围,所以它们都看作byte和short处理,因为你在b和s前面已经说明它们的类型了。
    至于f,因为float和double默认是需要用后缀区分的,如果没有后缀就会当作double处理,就算你在f前面已经说明它会是一个float类型。当你把b和s设为1000000,你就会得到你想知道的错误。