Decltype(0.5) x = 5;使 x *Double* 而不是 *Float*。为什么?
Decltype(0.5) x = 5; makes x *Double* rather than *Float*. Why?
无论浮点数如何,总是求一个双精度不是浪费 space 吗? AFAIK float 使用 4B 或 32 位,而 double 占用 8B 或 64 位。为什么编译器无法判断浮点数是否足够?
C++中0.5的类型是double。如果你想要一个浮动,你需要说 0.5f 。这是C和C++定义的一部分。
您的问题中暗示希望根据值中的位数自动选择类型,例如我们可以将 float 用于 0.5,将 double 用于 0.123456789。然而,这不是一种可行的方法,首先是因为它对于 1980 年代编写的编译器来说过于复杂,其次是因为它使代码更难推理,例如0.123 / 0.987
的类型是什么?
无论浮点数如何,总是求一个双精度不是浪费 space 吗? AFAIK float 使用 4B 或 32 位,而 double 占用 8B 或 64 位。为什么编译器无法判断浮点数是否足够?
C++中0.5的类型是double。如果你想要一个浮动,你需要说 0.5f 。这是C和C++定义的一部分。
您的问题中暗示希望根据值中的位数自动选择类型,例如我们可以将 float 用于 0.5,将 double 用于 0.123456789。然而,这不是一种可行的方法,首先是因为它对于 1980 年代编写的编译器来说过于复杂,其次是因为它使代码更难推理,例如0.123 / 0.987
的类型是什么?