编译器警告在printf()中使用float而不是double

Compiler warning for using floats instead of double in printf()

本文关键字:float double 警告 printf 编译器      更新时间:2023-10-16

如果我给出浮点值而不是双精度,我会收到警告。这就是为什么我使用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,等等)