Как получчить числовое отображение unsigned char с помощью sprintf() в с?
Пытаюсь напечатпть два чара на экране:
sprintf (str, "Max:%d,Min:%d", 0x05, 0x00);
А в ответ вместо "Max:5,Min:0" получаю "Max:1280,Min:12...", почему так происходит?
В результате сделал насильное приведение чаров к интам:
sprintf (str, "Max:%d,Min:%d",(int)mem.cell[2], (int)mem.cell[3]);
Костыль, но работает. Спасибо за помощь=)
Интересно, похоже есть зависимость от компилятора... Не знаю какой используется в https://ideone.com, но код топикстартера выдал правильные значения там.
GavriKos: похоже на кривой компилятор у топикстартера - ideone все правильно сделал. На SO пишут, что C по стандарту засовывает hex-константу туда, куда она влезает согласно списку, который начинается с int
GavriKos: варианты
-мы весь код автора не наблюдаем. У него может быть в другом месте написан похожий вывод, который он и получает
-прошивка не уходит в контроллер (изменения в исходном тексте не влияют на программу)
Армянское Радио: Уходят и влияет, если поменять значения аргументов, в первом слоте получается совершенно другая билиберда. 127 во втором слоте сидит так, как будто там его гнездо...
Инты отлично работают... В результате ввел еще две интовых переменных, им присваиваю значение чара и их уже печатаю. Костыль, но работает. Спасибо за помощь=)
Армянское Радио: вот что значит: не раскрыть проблему полностью!
Я думал, у человека проблема с десктопным софтом, а он, оказывается, под микроконтроллеры пишет с использованием какого-то "кейла" вместо компилятора. Мде...