警告:格式 '%d' 需要类型"int",但参数 6 的类型为 'long int'

warning: format '%d' expects type 'int', but argument 6 has type 'long int'

本文关键字:int 类型 参数 long 警告 格式      更新时间:2023-10-16

我在编译过程中收到此警告。

"警告:格式"%d"需要类型"int",但参数6具有类型"long int"

我应该将%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));
}

将格式说明符从%d更改为%ld,或将参数的数据类型更改为int。(%lu将用于unsigned long int。)

或者,您可以使用std::cin作为输入,使用std::cout作为输出。您不必使用printf/scanf样式的类型代码;操作数类型的正确重载将被自动调用。

我收到了同样的警告,但后来我在网上搜索,得到的最佳解决方案是——没关系,只要运行程序就可以了。因为我尝试了我能做的每一件事,但我无法摆脱"警告",所以我一直在某个极客网站上上网,有人告诉我不要动代码,只要运行它就行了。。。