c++ - 类型转换与类型消歧

标签 c++ c

转换用于类型转换和消除歧义。在进一步的研究中,我发现这两个例子:

(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/

相关文章:

c - 宏问题,有多个语句

c - strstr() 始终返回 null

c++ - 对象仍在范围内时调用 Arduino 类析构函数

c++ - boost::archive::xml_oarchive 中的 class_id

c - 不允许我在我的信息系统项目中输入学生的特定成绩

c - 有没有办法减少套接字发送缓冲区大小的最小下限?

c - 在使用 Xcode 的 C 语言中,如何更改 while 循环以匹配第一个 for 循环?

c++ - CMakelists.txt 使 windows 和 mac 工作起来非常复杂,有没有更好的方法?

c++ - 可变参数模板函数的扩展导致段错误

c++ - std::string 操作:空白, "newline escapes '\'"和注释 #