如果我得到整数和双精度的乘积,输出的数据类型是什么?

时间:2018-03-27 16:47:23

标签: c++

当我在整数类型中声明变量并在double类型中声明变量并且我得到它们的乘积时,您期望输出将在每种类型中,为什么? 例如:

int main(){
    int number_1 ;
    double number_2 ;
    cout << number_1 * number_2 ;
    cout << endl ;
    return 0 ;
}

4 个答案:

答案 0 :(得分:1)

结果的类型是double。规则有点罗嗦,但是:

  • 如果其中任何一种类型为long double,则另一个参数转换为long double,结果类型为long double
  • 否则,如果其中一个类型为double,则另一个参数将转换为double,结果类型为double
  • 否则,如果其中任何一个类型为float,则另一个参数将转换为float,结果类型为float

如果不涉及浮点类型,则进入“整数提升”,这取决于参数大小和签名的相当详细的细节。此外,如果任一参数的类型是作用域枚举,则另一个参数必须具有相同的类型。这一切都有点太复杂了。

答案 1 :(得分:0)

它将是一个双倍的,因为C ++只是重载运算符以将产品放入更大的(具有更多位的数据)数据类型。

答案 2 :(得分:0)

如有疑问,请尝试一下。通常,较高的精度优先。因此,如果您有intdouble,则double的精度更高,因此结果将具有该格式。

int number_1 = 3;
double number_2  = 1.5;
std::cout << number_1 * number_2;

Output:
    4.5

答案 3 :(得分:0)

这将是双倍的 因为在c ++中,当有多种数据类型时,它总是以最高精度数据类型打印答案。