2014-09-01 63 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

我得到了同样的警告,但后来我在网上搜索和我得到的最佳解决方案 - 无关紧要运行该程序,它的工作原理。因为我试过每一件事我可以但我不能摆脱这种'警告',所以我不断在网上冲浪一些极客网站上我被告知离开代码不变,只是运行它,它的工作...

相关问题