编译器警告在printf()中使用float而不是double
Compiler warning for using floats instead of double in printf()
如果我给出浮点值而不是双精度,我会收到警告。这就是为什么我使用static_casts来加倍。如果我决定不进行强制转换,有没有办法避免编译器警告?为什么存在此警告?在我的系统(8位处理器)中,我怀疑double是否和float大小相同。
printf("{"type":"pid_cnf","
""pit_rkp":%.2f,"pit_rki":%.2f,"pit_rimax":%.2f,"
""rol_rkp":%.2f,"rol_rki":%.2f,"rol_rimax":%.2f,"
""yaw_rkp":%.2f,"yaw_rki":%.2f,"yaw_rimax":%.2f,"
""pit_skp":%.2f,"rol_skp":%.2f,"yaw_skp":%.2f}n",
static_cast<double>(pit_rkp), static_cast<double>(pit_rki), static_cast<double>(pit_rimax),
static_cast<double>(rol_rkp), static_cast<double>(rol_rki), static_cast<double>(rol_rimax),
static_cast<double>(yaw_rkp), static_cast<double>(yaw_rki), static_cast<double>(yaw_rimax),
static_cast<double>(pit_skp), static_cast<double>(rol_skp), static_cast<double>(yaw_skp) );
您会收到警告,因为您调用了一个可变函数(printf()
),该函数受参数提升(short
s到int
s,float
s到double
s,等等)
相关文章:
- 编译器给出错误:format 指定类型 'float *',但参数的类型'double' [-Wformat]
- 缩小从double到float的转换
- 如何修复 E2015 "ambiguity between pow(double,double) and pow(float,int)"
- 如何将 std::array<double, 100> 转换为 std::array<float, 100> ?(避免明显的样板实现)
- "Cannot convert parameter 1 from double to float"虽然没有更改参数
- 为什么Float和double在小数位置不识别0
- c++模板实例化可以使用int、long等,但不能使用float、double等
- 如何在C++中为integer、float和double数据类型同时重载运算符
- 将int转换为float/double,然后将其转换回,始终相同
- g++ 在不使用 -Wconvert 的情况下将 double/float 转换为无符号整数时发出警告
- 当我使用可变参数时,它可以很好地处理int和double,但当涉及到float时,会发生错误
- 为什么可以使用从double到float的隐式强制转换
- 混淆了double和float数据类型
- 使用Float或Double类型时不显示小数
- 比较float比double更有效吗
- 使用float 2d数组的C++内存泄漏,如果我使用double,则会消失
- 错误:初始化时无法将'float*'转换为"qreal* {aka double*}"
- 为什么numeric_limits::min对int返回负值,而对float/double返回正值?
- 如何将十进制科学记数法float/double转换为普通字符串
- c++中,将float/double转换为int时损失1