如何以十进制打印uint8?

时间:2019-01-31 15:49:08

标签: c

我想用十进制打印指令的输出值。我做了不同的指示。但是我的代码有不同的结果。因此,我不确定这是否正确。我不知道进行比较并检查正确方向的初始值:

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

1 个答案:

答案 0 :(得分:1)

您正在从id中读取信息,该信息尚未初始化。

|=运算符对左侧和右侧操作数执行按位或运算,并将结果存储在左侧操作数中。这意味着:

x |= y;

与:

x = x | y;

在您的代码中,id|=运算符的左侧,但是您从未初始化id。这意味着您正在读取一个未初始化的值。这将调用undefined behavior

您需要使用某个已知值初始化id,或者只使用=而不是|=