Как распечатать uint8 в десятичном формате? - PullRequest
0 голосов
/ 31 января 2019

Я хочу напечатать выходное значение инструкции в десятичном виде.Я сделал разные инструкции.Но у меня есть другие результаты из моего кода.Поэтому я не уверен, правильно это или нет.Я не знаю начальное значение для сравнения и проверки в правильном направлении:

uint16_t id;
id |= *((uint8_t*)(pkt->payload)+ptr)<<8;
printf("t_id %u\n", (unsigned int)id);

1 Ответ

0 голосов
/ 31 января 2019

Вы читаете из id, который не инициализирован.

Оператор |= выполняет побитовое ИЛИ левого и правого операндов и сохраняет результат в левом операнде.Это означает следующее:

x |= y;

То же, что и:

x = x | y;

В вашем коде у вас есть id в качестве левой части оператора |=, но вы никогдаинициализировано id.Это означает, что вы читаете неинициализированное значение.Это вызывает неопределенное поведение .

Вам нужно либо инициализировать id с некоторым известным значением, либо просто использовать = вместо |=.

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