我想用十进制打印指令的输出值。我做了不同的指示。但是我的代码有不同的结果。因此,我不确定这是否正确。我不知道进行比较并检查正确方向的初始值:
uint16_t id;
id |= *((uint8_t*)(pkt->payload)+ptr)<<8;
printf("t_id %u\n", (unsigned int)id);
答案 0 :(得分:1)
您正在从id
中读取信息,该信息尚未初始化。
|=
运算符对左侧和右侧操作数执行按位或运算,并将结果存储在左侧操作数中。这意味着:
x |= y;
与:
x = x | y;
在您的代码中,id
是|=
运算符的左侧,但是您从未初始化id
。这意味着您正在读取一个未初始化的值。这将调用undefined behavior。
您需要使用某个已知值初始化id
,或者只使用=
而不是|=
。