2014-04-09 24 views
0

如果我給漂浮物而不是雙打,我會收到警告。這就是爲什麼我使用static_casts加倍。 如果我決定不投射,是否有避免編譯器警告的方法?爲什麼這個警告存在?在我的系統(8位處理器)中,我懷疑double的大小與float相同。在printf中使用浮點數而不是double的編譯器警告()

   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)); 

回答

0

,因爲你調用一個可變參數函數(printf())這是受參數推廣(short s到int S,float s到double S等)

你得到一個警告