你能在 c++ 中将不同的数字类型加在一起吗?

Can you add different number types together in c++?

本文关键字:数字 类型 加在一起 c++      更新时间:2023-10-16

我对 c++ 很陌生,我想知道您是否可以将不同的数字类型添加在一起,如下所示:

int num1=1;
float num2=1.0;
double num3=1.0;

你能把这些变量加在一起吗?如果可以,什么类型会

num1+num2+num3

是?

如前所述,答案将是double.

编译器将为此(不优化(做什么是

  1. 将文字 1 读入 num1
  2. 将文字 1.0f 读入 num2
  3. 阅读文字 1.0 信息 num3
  4. 将整数 num1 转换为浮点数字 num1'
  5. 添加 num1' 和 num2,结果是浮点 tmp
  6. 将浮点 tmp 转换为双 tmp'
  7. 添加 tmp' 和 num3 以获得最终的双精度结果

您需要小心这些转换。虽然您可以将float(和int(转换为double而不会损失任何精度,但您不能总是对intfloat执行相同的操作。

float具有 24 位精度,这意味着它可以精确地表示高达 1680 万的所有整数,而signed int可以达到大约 20 亿。详情请看这里。

[我假设是LP64型号]

答案是双重的。 如果你想测试它,你可以尝试auto ret = num1+num2+num3安斯看到ret的类型。

是的,当然...结果将给出浮点数 1+1.0+1.0=3.0 自双