摘要:運算子的優先順序
一般我們在撰寫程式時常常會用到運算子,比如"="、"AND"、"ANDALSO"等等;有時候不小心常常會在這部分發生一些錯誤,所以不知道是不行的,比如今天撰寫程式時就發生一個錯誤,像下面這樣
- If MyByteArray(8) And &HF = 0 Then
- ...
- Else
- ...
- End If
If MyByteArray(8) And &HF = 0 Then
...
Else
...
End If
這段是把我接收到的byte陣列中的一個抓出來,然後取低位元組來用(也就是bit0~bit3),判斷是不是0,是的話要做特殊的處理,結果執行時發現永遠不會成立,為什麼呢?查了MSDN之後原來"="運算子的優先權高於AND運算子,所以會先處理
- &HF = 0
&HF = 0
的部分結果當然是傳回0,之後是
- MyByteArray(8) And 0
MyByteArray(8) And 0
結果也會是0,再來就輪到IF了,IF 0會判定為False,所以我程式的動作就會異常了..T.T
解決的方式是
- If (MyByteArray(8) And &HF) = 0 Then
- ...
- Else
- ...
- End If
If (MyByteArray(8) And &HF) = 0 Then
...
Else
...
End If
所以還是要養成好習慣,該有括號的地方不要偷懶啊..
相關參考
Visual Basic 中的運算子優先順序