2009-07-17 65 views
1

我想從一個結構中取一個16位無符號整數,掩蓋它的前8位,並用它作爲一個數組的索引與函數analogWrite哪個將Arduino的輸出引腳和輸出字節作爲參數。有問題的代碼看起來像這樣:analogWrite(outputPin, my_array[myStructure->data & 0xFF00 >> 8]);位屏蔽索引​​到一個陣列,Arduino環境

不幸的是,此代碼不起作用。我總是得到零作爲輸出。有任何想法嗎?

+1

始終對位操作和括號| ^,因爲他們的優先權是違反直覺的。 – starblue 2009-07-17 08:34:29

回答

3

我懷疑運營商的優先權。嘗試:

analogWrite(outputPin, my_array[(myStructure->data & 0xFF00) >> 8]); 
0

尋找一個優先順序表對C您執行以下操作:

  1. 從MYSTRUCTURE
  2. 右移,爲0xFF00 8步
  3. 逐位,並將其與獲取數據數據

    使用更多行或括號!

5

Operator precedence

此:

myStructure->data & 0xFF00 >> 8 

等同於:

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

但是你想:

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

還有一個問題 - >和&,其中 - >具有更高的優先級。 – Key 2009-07-17 08:22:44