Spo*_*ook 20
这是语言规范的一部分.如果你想要一个双,写:
auto a = 12.3;
Run Code Online (Sandbox Code Playgroud)
如果你想要一个浮点数,写:
auto a = 12.3f;
Run Code Online (Sandbox Code Playgroud)
如果你想要一个长双,写:
auto a = 12.3L;
Run Code Online (Sandbox Code Playgroud)
资料来源:MSDN
整个主题在C++标准的章节中有详细描述2.14 Literals.
这仅指浮点文字.
这与您在代码中编写的任何整数都被视为(带符号)的情况相同int.只要将其赋值给变量,就会得到变量的类型.
但是,在计算中使用独立文字时,您将获得该计算的文字类型,可能会触发隐式类型转换:
float f = 3.141; // f is of type float, even though the literal was double
auto d = f * 2.0; // d will be of type double because of the literal 2.0
auto f2 = f * 2.0f; // f2 will be of type float again
Run Code Online (Sandbox Code Playgroud)
第二行的计算涉及两种不同的类型:变量 的类型f是float.即使它是从double文字构造的,变量的类型也是重要的.另一方面,文字 的类型2.0是double因此触发计算的隐式转换.因此,实际乘法作为2的乘法执行double.
如果希望独立值具有特定类型,请使用匹配的文字.