书中写道
(int)3/4 是0
(double)3/4是0.75
(double)(3/4)是0.0第一个我明白是3除以4后的取整
那第二 第三个呢?能帮我详细解释下吗 谢

解决方案 »

  1.   

    这个是自动转换问题,(int)3/4 等同于 ((int)3)/4 等同于3/4,直接写3系统默认为int型; 
    (double)3/4 就是先将3转换为double型数值,然后再除以4,这时候系统自动将int类型的4转换为double类型,所以计算结果为0.75;
    (double)(3/4)这个是先计算int类型的3和4相除的值,这个值为0,然后再将int型的0转换为double型,也就是0.0了。
      

  2.   

    int类型遇到double类型时就自动转换为更高级的了
      

  3.   


    很详细,非常非常感谢!
    再请问一下,从int型的到double型是怎么转换的?比如这个3和0我看书double型是用64位表示浮点数。不应该是64位么,怎么能是 0.0?
      

  4.   


    哦哦,那这个3/4变成double型和0变成double型 都是怎么变的?有什么运算规则么。
      

  5.   

    拜托楼下的帮我说说,这个double型到底是怎么变的吧,要考试的~~
    怎么从3/4变成double的0.75 从0变成double 的 0.0的?
      

  6.   

    double是浮点性,所以必至少要保留一个小数,比如0变成double就是0.0,而3/4就是0.75
      

  7.   

    先看下书,搞懂 !,&,||(非,与,或)的关系,相信就很简单了。
      

  8.   

    看到大家说了这么多一楼说的真的很对,我们在数值转换中要注意自动转化,这个问题在我们新手看来一般不太会注意的,只有到自己真正遇到数据输出和自己想要的不相同时才会想到,建议大家多研究下数据自动转化的问题,虽然说平时会用String类比较多,可是如果你在做项目涉及到要求去数据的精确值时,建议还是自己的看看吧!
      

  9.   

    (double)3/4是0.75 是因为先将3转化成double类型然后再和4相除 得到的是double类型但
    (double)(3/4)是0.0是因为先将3和4相除 得到的是0 然后再转化成double类型 就是0.0
      

  10.   

    (double)3/4  的意思是3/4 看成一个整体 是double型的可以是小数
    (double)(3/4) 的意思是2个整体 (3/4)是一个整体 它的结构是个int型的 3和4都是int型的所以(3/4)这个整体也是int型的 也就是0 然后再把0转换成double型的 也就是0了应该懂了吧
      

  11.   

    short a=1,short b=4
    short c=a*b==>是错误的。因为a*b已经自动转换成int型double (1.32*1.21)==>输出1.5972
    float (1.32*1.21)==>输出1.5972
    double(3/2.1)==》输出6.3在自动类型转换中,
    若运算符两边都为 整型 则转换成 int;
    有一个为 浮点型 则自动转换成 double 型(验证通过不是float型)
      

  12.   

    你这种情况就是
    两边都是整型的情况,
    (double)(3/4)是0.0 
    为啥会出现0.0,也就是先自动转换成int型,再被你强制转换成double类型(符合上面定律)
      

  13.   

    1楼的解释了。。
    第二题double的运算优先级比/高。所以先把3转成double型再去运算.
    第三题()的运算优先级比double高,所以先把两个整数运算了再转成double型
      

  14.   


    非常用好。不过还有像 5 6 2 这样的都是整型。
    像1.2 1.2 2.3 默认的都是double型。而不是float型.
    这时候系统自动将int类型的4转换为double类型  有什么说法吗。系统为什么会自动将int double
    而不是double 转 int 
    int 是 4个字节
    double 是 8个字节。
    为什么 int 转 double 
      

  15.   

    前面加括号是强制型类型转换了。所以回出现小数,,而第二个是因为你把3/4的值求出来了。而3/4的默认类型是 int,所以是0,然后你又强制类型转换了。所以是0。0