C 位屏蔽数组索引,Arduino环境
我试图从结构中获取一个16位无符号整数,屏蔽它的前8位,并使用函数analogWrite将Arduino上的输出引脚和输出字节作为参数,将其用作数组的索引。所讨论的代码如下:C 位屏蔽数组索引,Arduino环境,c,arduino,bitmask,C,Arduino,Bitmask,我试图从结构中获取一个16位无符号整数,屏蔽它的前8位,并使用函数analogWrite将Arduino上的输出引脚和输出字节作为参数,将其用作数组的索引。所讨论的代码如下:analogWrite(outputPin,my_数组[myStructure->data&0xFF00>>8]) 不幸的是,这段代码不起作用。我总是得到零作为输出。有什么想法吗?我怀疑操作员优先。尝试: analogWrite(outputPin, my_array[(myStructure->data &
analogWrite(outputPin,my_数组[myStructure->data&0xFF00>>8])代码>
不幸的是,这段代码不起作用。我总是得到零作为输出。有什么想法吗?我怀疑操作员优先。尝试:
analogWrite(outputPin, my_array[(myStructure->data & 0xFF00) >> 8]);
我怀疑操作员优先。尝试:
analogWrite(outputPin, my_array[(myStructure->data & 0xFF00) >> 8]);
查看C的优先级表,您可以执行以下操作:
从myStructure获取数据
右移0xFF00 8步
位智能化和数据智能化
使用更多行或括号
查看C的优先级表,您可以执行以下操作:
从myStructure获取数据
右移0xFF00 8步
位智能化和数据智能化
使用更多行或括号
这:
相当于:
myStructure->data & (0xFF00 >> 8)
但是你想要:
(myStructure->data & 0xFF00) >> 8
这:
相当于:
myStructure->data & (0xFF00 >> 8)
但是你想要:
(myStructure->data & 0xFF00) >> 8
还有一个问题->和-,其中->具有更高的优先级。我的微控制器输出的引脚上现在肯定有电压!谢谢->的优先级在C中可能是最高的,因此您不需要在它周围加括号。starblue:是的,但它与其他人共享最高的位置,具有从左到右的关联性。还有一个问题是->和&,其中->的优先级更高。我的微控制器输出的引脚上现在肯定有电压!谢谢->的优先级在C中可能是最高的,因此您不需要在其周围加括号。starblue:是的,但它与其他函数共享最高的位置,具有从左到右的关联性。位运算总是使用括号&| ^,因为它们的优先级是违反直觉的。位运算总是使用括号&| ^,因为他们的先例是违反直觉的。