我正在尝试从结构中获取一个 16 位无符号整数,屏蔽它的前 8 位,并将其用作具有函数 analogWrite 的数组的索引,该函数将 Arduino 上的输出引脚和输出字节作为参数. 有问题的代码如下所示:analogWrite(outputPin, my_array[myStructure->data & 0xFF00 >> 8]);
不幸的是,这段代码不起作用。我总是得到零作为输出。有任何想法吗?
这个:
myStructure->data & 0xFF00 >> 8
相当于:
myStructure->data & (0xFF00 >> 8)
但你想要:
(myStructure->data & 0xFF00) >> 8
我怀疑运算符优先级。尝试:
analogWrite(outputPin, my_array[(myStructure->data & 0xFF00) >> 8]);
查看 C 的优先级表,您可以执行以下操作:
从 myStructure 获取数据
右移 0xFF00 8 步
按位和数据
使用更多行或括号!