Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
Обьясните, что за прикол с данными при выводе через printf
Отправлено
ZoltriX
02 октября 2009, г. 20:58
unsigned char test_byte;
test_byte = 0x00;
printf ("\nData is = %x", test_byte);
Выводит Data is = 88
test_byte = 0x10;
printf ("\nData is = %x", test_byte);
Выводит Data is = 1088
test_byte = 0xFF;
printf ("\nData is = %x", test_byte);
Выводит Data is = FF88
Что за 88 берётся???
Составить ответ
|
Вернуться на конференцию.
Ответы
Учите матчасть. Кейл для оптимизации при вызове функций не расширяет char в int, как нам завещали великие K&R. Там должен быть спецификатор формата для байта.
-
vmp
(02.10.2009, 21:19:35
80.90.116.15
,
пустое
)
Копперфильд! По принтфу узнал Кейл!
-
VasilyS
(02.10.2009, 21:25:50
80.92.96.25
,
пустое
)
На сахаре был баннер - "На вопросы отвечает бригада телепатов". :) Узнал не по принтфу, а по повадкам.
-
vmp
(02.10.2009, 21:58:10
80.90.116.15
, 127 байт)
Угадал. Действительно Кейль! А как сделать чтоб нормально выводилось???
-
ZoltriX
(02.10.2009, 22:44:14
78.40.231.80
,
пустое
)
Вместо %x писать %bx для байтовых аргументов.
-
vmp
(02.10.2009, 22:50:45
80.90.116.15
,
пустое
,
ссылка
)
printf ("\nData is = %02x", (int test_byte);
-
ETM
(02.10.2009, 22:49:23
94.79.44.2
,
пустое
)
printf ("\nData is = %02x", (int) test_byte);
-
ETM
(02.10.2009, 22:50:2
94.79.44.2
,
пустое
)
Можно и так, хотя код будет менее оптимальный. Можно еще вставить в начале #pragma intpromote
-
vmp
(02.10.2009, 23:04:55
80.90.116.15
,
пустое
,
ссылка
)
Какая нафиг оптимизация кода, в котором есть printf... :)
-
ETM
(02.10.2009, 23:24:47
94.79.44.2
,
пустое
)
А какой щас последний Keil для 51-го? И не бохаты ли лекарством? А то тут понадобилось камраду...
-
ETM
(02.10.2009, 23:10:45
94.79.44.2
,
пустое
)
Это в сахаре надо клизму искать. :) К счастью давно не писал ничего нового под 51-й, а старые проекты править проще на старых компиляторах.
-
vmp
(02.10.2009, 23:13:47
80.90.116.15
,
пустое
)
printf ("\nData: %bx ", test_byte); выводит правильно! А как вывести test_byte = 0x110001F0; ато обрезает
-
ZoltriX
(02.10.2009, 23:50:50
78.40.231.80
, 52 байт)
А если %d? А какая модель printf подключена? Может, hex не разрешен.
-
VasilyS
(02.10.2009, 21:07:6
80.92.96.25
,
пустое
)
& ставь перед именем переменной в аргументе
-
NAUT
(02.10.2009, 21:01:53
213.85.253.138
,
пустое
)
ой...
-
NAUT
(02.10.2009, 21:23:31
213.85.253.138
,
пустое
)
Садись, два бала! На перездачу...
-
MARS
(02.10.2009, 21:04:44
77.122.166.244
,
пустое
)
а нах?
-
LordN
(02.10.2009, 21:04:41
82.200.122.174
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 97:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru