【发布时间】:2015-08-27 11:26:21
【问题描述】:
您好,考虑一下这段代码:
uint16_t dest_pid;
uint8_t *p;
pf->dest_pid = p[0] + (p[1] << 8) //(p[1] << 8) equals 0 right?
此代码是嵌入式操作系统驱动程序的一部分。 一些想法 该声明背后的想法可能是什么?还是我遗漏了一些重要的东西?
【问题讨论】:
-
取消引用未初始化的指针??不确定那里有什么想法,但肯定不是一个好主意。除非你遗漏了一些代码?
-
(p[1] << 8)是(部分)表达式。它有一个类型(无符号),它派生自p[1]s 类型:它只“继承”无符号质量,而不是大小。 -
为什么你认为它是 0?
-
@RadoslawKrasimirow 忘记变量;它们是低等生命形式。 C 语法是关于值和表达式的。变量的存在只是作为这些的基本块。
标签: c