printf 在某些情况下给了我奇怪的额外值。可能会发生什么?
我正在处理 uint8_t 数组中的值并将其打印到我的终端以验证一切是否正确。但是由于某种原因,当我打印一个 uint8_t 时,我得到了奇怪的值——我得到了预期值加上一些其他值(它总是相同的额外值),就好像我正在打印一个 uint16_t 或其他 16 位值一样。我将其全部精简为以下示例:
这是测试代码
test_payload[0] = (uint8_t)0x58;
test_payload[1] = (uint8_t)0x7B;
test_payload[2] = (uint8_t)0x6B;
test_payload[3] = (uint8_t)0x05;
test_payload[4] = (uint8_t)0x4F;
test_payload[5] = (uint8_t)0x81;
test_payload[6] = (uint8_t)0x69;
test_payload[7] = (uint8_t)0x00;
printf("%x\n\r", test_payload[0]);
printf("%x\n\r", test_payload[1]);
printf("%x\n\r", test_payload[0] + test_payload[1]);
for(i = 0; i < 8; i++)
{
printf("%x", test_payload[i]);
}
我得到的输出是
5803
7b03
d3
58037b0333034f03810369033
是什么让它表现得那样?