转换用于类型转换和消除歧义。在进一步的研究中,我发现这两个例子:
(double) 3; // conversion
(double) 3.0; // disambiguation
谁能解释一下区别,我看不出有什么区别。这种区别是否在 C++ 中也有效
编辑
最初的代码片段是这样的:
(float) 3; // conversion
(float) 3.0; // disambiguation
但将其更改为 double
因为浮点文字在现代编译器中不再是 float
并且该问题没有意义。我希望我正确地解释了这些评论,对于任何已发布的答案在编辑后变得无关紧要,我深表歉意。
最佳答案
(double) 3
是从整数 (int
) 到 float (double
) 的转换。
(double) 3.0
中的转换没用,它什么都不做,因为它已经是 double
。
An unsuffixed floating constant has type double.
(ANSI C 标准,§3.1.3.1 float 常量)
这个答案对C是有效的,在C++中应该是一样的。
关于c++ - 类型转换与类型消歧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21817897/