1

我正在尝试从结构中获取一个 16 位无符号整数,屏蔽它的前 8 位,并将其用作具有函数 analogWrite 的数组的索引,该函数将 Arduino 上的输出引脚和输出字节作为参数. 有问题的代码如下所示:analogWrite(outputPin, my_array[myStructure->data & 0xFF00 >> 8]);

不幸的是,这段代码不起作用。我总是得到零作为输出。有任何想法吗?

4

3 回答 3

5

运算符优先级

这个:

myStructure->data & 0xFF00 >> 8

相当于:

myStructure->data & (0xFF00 >> 8)

但你想要:

(myStructure->data & 0xFF00) >> 8
于 2009-07-17T08:14:36.250 回答
3

我怀疑运算符优先级。尝试:

analogWrite(outputPin, my_array[(myStructure->data & 0xFF00) >> 8]);
于 2009-07-17T08:12:44.977 回答
0

查看 C 的优先级表,您可以执行以下操作:

  1. 从 myStructure 获取数据

  2. 右移 0xFF00 8 步

  3. 按位和数据

    使用更多行或括号!

于 2009-07-17T08:13:25.240 回答