为什么自动推断此变量为double而不是float?

Abh*_*agi 14 c++ floating-point literals auto type-deduction

在下面的代码片段中,auto将变量推导出为double,但是我想要float

auto one = 3.5;
Run Code Online (Sandbox Code Playgroud)

它是否始终double用于带小数点的文字?如何确定浮点数和两倍数?

Gya*_*ain 29

文字类型3.5double。对于float请使用3.5f

您可以使用此代码段查看各种类型的信息。


Ayx*_*xan 8

3.5double文字。因此,auto正确推导其类型为double。您仍然可以使用它来初始化float变量,但是最正确的方法是使用float文字如3.5f。将f在年底被称为后缀。浮点字面量的后缀为:

  • (无后缀)定义双精度
  • f F 定义浮点数
  • l L 定义长双

除了浮点字面量之外整数字面量用户定义的字面量也有后缀。


dlm*_*tei 6

在C ++(和C)中,double除非使用,否则默认情况下会将浮动文字视为默认值f or F or l or L

该标准具有以下特点:

2.14.4除非后缀明确指定,否则浮动文字的类型为double。后缀f和F指定浮点数,后缀l和L指定长整数。如果缩放后​​的值不在其类型的可表示值范围内,则程序格式错误。

因此,

auto one = 3.5;
Run Code Online (Sandbox Code Playgroud)

始终存在double,如果您打算float 将其编码为

auto one = 3.5f;
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

872 次

最近记录:

6 年,3 月 前