Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 位屏蔽数组索引,Arduino环境_C_Arduino_Bitmask - Fatal编程技术网

C 位屏蔽数组索引,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 &

我试图从结构中获取一个16位无符号整数,屏蔽它的前8位,并使用函数analogWrite将Arduino上的输出引脚和输出字节作为参数,将其用作数组的索引。所讨论的代码如下:
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:是的,但它与其他函数共享最高的位置,具有从左到右的关联性。位运算总是使用括号&| ^,因为它们的优先级是违反直觉的。位运算总是使用括号&| ^,因为他们的先例是违反直觉的。