emb*_*ert 1 c floating-point compile-time-constant
在将具有双精度的文件转换为浮点数后,编译器(MSCV2005)会警告代码常量中的转换double为floatfor
...
float r;
r = (q1 + q2) * 0.5;
...
Run Code Online (Sandbox Code Playgroud)
即使q1, q2两个花车0.5似乎都被视为double.
如何调整这种行为,以便所有代码内常量都被视为floats?
使用f后缀表示常量具有类型float:
float q1 = ...;
float q2 = ...;
float r = (q1 + q2) * 0.5f;
Run Code Online (Sandbox Code Playgroud)
标准(§6.4.4.2浮动常量)说:
未填充的浮点常量具有类型
double.如果用字母后缀f或者F,它已经输入float.如果用字母后缀l或者L,它已经输入long double.
你问题中的常量没有后缀,因此有类型double.