C语言 将时间常量编译为浮点数



将带有双精度的文件转换为浮点数后,编译器 (MSCV2005( 会警告代码常量中从 doublefloat 的转换,例如

...
float r;
r = (q1 + q2) * 0.5;
...

即使q1, q2都是漂浮物0.5似乎被视为double

如何调整这种行为,以便将所有代码内常量视为float

使用 f 后缀表示常量的类型为 float

float q1 = ...;
float q2 = ...;
float r = (q1 + q2) * 0.5f;

标准(§6.4.4.2 浮动常量(说:

无后缀浮点常量的类型为 double 。如果后缀为字母 fF ,则具有 键入 float 。如果后缀为字母 lL,则其类型为 long double

您问题中的常量没有后缀,因此类型为 double .

只需在常量后添加f

float f = 0.5f;

最新更新