uint8 отображает странные символы - PullRequest
6 голосов
/ 04 сентября 2010

Я объявил переменную uint8, и когда значение в ней напечатано, я получаю смайлики и пробелы.Разве он не должен отображать целочисленные значения?

Ответы [ 2 ]

13 голосов
/ 04 сентября 2010

Держу пари, uint8 - это typedef для unsigned char в заголовках вашей системы. Тогда std::cout << u будет печатать символы, а не целые значения, где u имеет тип uint8. Попробуйте

std::cout << static_cast< int >( u );

или

std::cout << +u;

чтобы печатать числовые значения.

0 голосов
/ 04 сентября 2010

Все зависит от того, как вы печатаете значение. Для cout попробуйте cout << (long unsigned int)var;, а для printf вы можете попробовать использовать спецификатор формата %lu. Однако, как упоминалось выше, uint8, скорее всего, определено или typedef'd как что-то еще, поскольку это не тип ISO C ++. Существует также вероятность того, что uint8 будет typedef'd to unsigned long int (универсальный) или unsigned __int64 (специфичный для платформы MS), и компилятор MSVC ++ просто делает неправильное неявное преобразование. Не зная, как определяется uint8, трудно сказать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...