2014-09-01 106 views
1

編譯過程中收到此警告。警告:格式'%d'需要類型'int',但參數6的類型爲'long int'

「警告:格式 '%d' 需要鍵入 '詮釋',但論點6的類型爲 '長整型'

我應該改變%d%lu

編輯:? 這是代碼的一部分。

if (item->GetVnum() == DRAGON_HEART_VNUM) 
{ 
    sprintf(buf, "Inc %ds by item{VN:%d SOC%d:%d}", ret, item->GetVnum(), ITEM_SOCKET_CHARGING_AMOUNT_IDX, item->GetSocket(ITEM_SOCKET_CHARGING_AMOUNT_IDX)); 
} 
else 
{ 
    sprintf(buf, "Inc %ds by item{VN:%d VAL%d:%d}", ret, item->GetVnum(), ITEM_VALUE_CHARGING_AMOUNT_IDX, item->GetValue(ITEM_VALUE_CHARGING_AMOUNT_IDX)); 
} 
+0

'%ld'如果其簽署 – quantdev 2014-09-01 21:07:25

+0

什麼是你的編譯器? – Rasool 2014-09-01 21:40:47

+2

我們如何知道你應該改變什麼?也許你應該將格式更改爲'%ld'。也許你應該將參數改爲'int'。這就像是問'2 + 3 = 6'中的錯誤在哪裏。應該是'2 + 3 = 5'嗎?或者它應該是'2 * 3 = 6'。只有你知道你真正需要什麼。 – AnT 2014-09-01 21:57:55

回答

5

變化從%d到格式說明,或將參數的數據類型更改爲int。 (%lu將用於unsigned long int。)

或者,您可以使用std::cin作爲輸入,使用std::cout作爲輸出。您不必使用printf/scanf樣式類型代碼;操作數類型的正確過載將被自動調用。

0

我得到了同樣的警告,但後來我在網上搜索和我得到的最佳解決方案 - 無關緊要運行該程序,它的工作原理。因爲我試過每一件事我可以但我不能擺脫這種'警告',所以我不斷在網上衝浪一些極客網站上我被告知離開代碼不變,只是運行它,它的工作...

相關問題