2015-03-18 4 views
2

Мне нужно использовать printf() для печати uint16_t. Этот ответ SO (How to print uint32_t and uint16_t variables value?) говорит, что мне нужно использовать inttypes.h.Как напечатать f() a uint16_t?

Однако я работаю над встроенной системой, а inttypes.h недоступен. Как распечатать uint16_t, если спецификатор формата для uint16_t недоступен?

+0

printf ("% u \ n", (uint16_t) что-то); – user3528438

+1

Выясните, насколько широкими являются различные целые типы в вашей системе и используйте соответствующий спецификатор. – Kevin

+2

@ user3528438: Нет, '% u' ожидает' unsigned int', а не 'uint16_t'. Приведение должно состоять в 'unsigned int'. –

ответ

5

Очевидный способ:

printf("%u\n", (unsigned int)x); 

без знака INT гарантированно будет по крайней мере, 16 бит, так что это не является потерей преобразования.

3

short int является наименьшим по меньшей мере 16 бит, поэтому преобразуем значение в unsigned short int и распечатайте его с помощью %hu.

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