int和float函数重载

时间:2015-12-10 17:42:08

标签: c++ floating-point int overloading

我有两个重载函数,如下所示:

uint32_t

它为void print(int i) { ... } void print(float f) { ... } 提供了这个错误:

print(1.2);

任何人都可以解释我为什么吗?

3 个答案:

答案 0 :(得分:4)

1.2是双字面而不是浮点数。

因此编译器需要明确消除歧义。

1.2f可以工作,因为它是一个浮点文字。

答案 1 :(得分:1)

它将1.2解释为双。将它投射到浮子将解决问题。

print(float(1.2));

答案 2 :(得分:1)

1.2double字面值,使您尝试调用的函数含糊不清 - double可以很容易地被截断为float或到int。使用float文字(1.2f)或明确地投射它可以解决问题。