请解释:
我正在声明一个具有 2 个构造函数的类,如下所示:
class A {
public :
A (double x) {cout << "DOUBLE \n";}
A (float x) {cout << "FLOAT \n";}
};
然后:
A a (3.7);
此结果以 DOUBLE 作为输出。 我也在 java 上试过这个 - 同样的结果。 谁能解释一下为什么?
编辑:我确实意识到 double 是数字的默认类型,例如 3.7 我的问题是为什么以及是否有充分的理由。
最佳答案
这是因为 3.7
文字是一个 double
。如果您想要 float
,请使用3.7f
。在 C++ 中,它在标准 2.14.4 Floating Literals 中指定。最相关的部分是
The type of a floating literal is
double
unless explicitly specified by a suffix. The suffixesf
andF
specifyfloat
, the suffixesl
andL
specify long double.
这没有回答为什么会这样。我想这是因为它在 C 中的方式,而在某种程度上,C 中的方式必须是任意的。
关于java - 在施工时双重优先于 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17481015/