隐式类型转换 - Int为double

时间:2014-01-02 08:01:47

标签: java casting implicit-conversion

我有一个大学的练习,看起来像:

int a = 10;
int b = 3;

double c = a / b;

问题是:哪个值是c。

现在我想说,c是3.3。在计算结果之前,它被隐式转换为double。 但是这个问题的正确答案是根据我的记录3.0。

这是怎么回事?编译器是否真的首先将结果计算为整数,然后在第二步中将其转换为加倍?

或者我是否理解错误?

3 个答案:

答案 0 :(得分:6)

  

编译器是否真的首先将结果计算为整数和   然后在第二步中把它加倍?

答案 1 :(得分:3)

  

编译器是否真的首先将结果计算为整数和   然后在第二步中把它加倍?

是,

运行时首先计算RHS结果,然后将结果转换为double。现在,由于RHS包含int / int,因此结果位于int,您无法获得3.3

因此,如果RHS包含double / intint / double,则会在计算结果之前进行类型提升并将RHS操作数提升为double,因此得到3.3

答案 2 :(得分:1)

看看实际发生的是:

double c = (double)    a / b; //double of 3 = 3.0

你必须这样做

double c = a/(double)b