可以在C ++中将不同的数字类型加在一起吗?

时间:2018-10-03 08:59:39

标签: c++

我对C ++还是很陌生,我想知道是否可以将不同的数字类型加在一起,就像这样:

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

您可以将这些变量加在一起吗?如果可以,那是什么类型

num1+num2+num3

是吗?

3 个答案:

答案 0 :(得分:1)

答案是双重的。如果要测试,可以尝试auto ret = num1+num2+num3 并看到类型ret具有。

答案 1 :(得分:1)

如前所述,答案将是double

编译器为此做的(没有优化)是

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

您需要谨慎处理这些转换。尽管您可以将float(和int)转换为double,而不会损失任何精度,但是不能总是将int转换为float

float具有24位精度,这意味着它可以精确地表示所有整数,最大约为1680万,而signed int可以高达大约20亿。有关详细信息,请参见here

[我假设使用LP64 model]

答案 2 :(得分:-6)

是的...结果将浮动 1 + 1.0 + 1.0 = 3.0 自从双