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