将double转换为int:它是如何工作的?

时间:2014-05-22 14:51:03

标签: c++ casting

让我们来看看这个节目:

#include <iostream>

...

int main()
{
    double koza = ( 1+2, 54 + 6, foo(), bar(), (double) 8/9 );
    std::cout << koza << std::endl;

    return 0;
}

输出为8/9,即0.888889。如果我改为使用static_cast<double> (8/9)double(8/9),那么首先会计算8/9,这将被解释为integer(所以8/9等于0),然后我会进行投射在double上,它会给我0作为输出。

(double) 8/9究竟是如何运作的?它是否会将89同时转换为double,然后计算出来?或者它将(double)之后的所有内容视为double而不是默认int?或者以其他方式?

在类中,当我们处于这种情况时,通过将.0添加到整数,将数字写为浮点数,例如:

double x = 8.0

但它会如何在这里起作用?或者我应该问:这究竟是如何运作的?这三个表达式之间有什么区别吗?

a)double x = 8.0 / 9;

b)double x = 8 / 9.0;

c)double x = 8.0 / 9.0;

1 个答案:

答案 0 :(得分:4)

(double)8/9((double)8)/9 - (double)紧紧绑定。

当您对doubleint /进行操作时,int会隐式转换为double

适用的其他二元运算符(大多数?所有?)也是如此。