2014-09-01 4 views
1

Получаю это предупреждение во время процесса компиляции.предупреждение: формат '% d' ожидает тип 'int', но аргумент 6 имеет тип 'long int'

«предупреждение: формат '% d' ожидает типа 'Int', но аргумент 6 имеет тип 'длинный ИНТ'

Должен ли я изменить %d в %lu

EDIT: Это является частью кода.

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

+0

, компилятор? – Rasool

+2

Как мы узнаем, что вы должны изменить? Возможно, вы должны изменить формат на '% ld'. Возможно, вы должны изменить аргумент на 'int'. Это похоже на вопрос, где ошибка в '2 + 3 = 6'. Должно ли это быть '2 + 3 = 5'? Или это должно быть '2 * 3 = 6'. Только вы знаете, что вам действительно нужно. – AnT

ответ

5

Изменить спецификатор формата от %d до %ld или изменить тип данных аргумента int. (%lu бы для unsigned long int.)

В качестве альтернативы можно использовать std::cin для ввода и std::cout для вывода. Вам не нужно использовать коды типа printf/scanf; правильная перегрузка для типа операнда будет вызываться автоматически.

0

Я получаю такое же предупреждение, но затем я искал он-лайн, и лучшее решение, которое я получил, не имеет значения. Просто не запустите программу, и она работает. Потому что я пробовал все, что мог, но я не мог избавиться от этого «Предупреждения», поэтому я продолжал заниматься серфингом в сети n на каком-то сайте geek, мне сказали оставить код нетронутым и просто запустить его, и он сработал ...

Смежные вопросы