運算子的優先順序

摘要:運算子的優先順序

一般我們在撰寫程式時常常會用到運算子,比如"="、"AND"、"ANDALSO"等等;有時候不小心常常會在這部分發生一些錯誤,所以不知道是不行的,比如今天撰寫程式時就發生一個錯誤,像下面這樣

  1. If MyByteArray(8) And &HF = 0 Then  
  2.    ...  
  3. Else  
  4.    ...  
  5. End If  
If MyByteArray(8) And &HF = 0 Then
   ...
Else
   ...
End If

這段是把我接收到的byte陣列中的一個抓出來,然後取低位元組來用(也就是bit0~bit3),判斷是不是0,是的話要做特殊的處理,結果執行時發現永遠不會成立,為什麼呢?查了MSDN之後原來"="運算子的優先權高於AND運算子,所以會先處理


  1. &HF = 0  
&HF = 0

的部分結果當然是傳回0,之後是


  1. MyByteArray(8) And 0  
MyByteArray(8) And 0

結果也會是0,再來就輪到IF了,IF 0會判定為False,所以我程式的動作就會異常了..T.T


解決的方式是


  1. If (MyByteArray(8) And &HF) = 0 Then  
  2.    ...  
  3. Else  
  4.    ...  
  5. End If  
If (MyByteArray(8) And &HF) = 0 Then
   ...
Else
   ...
End If

所以還是要養成好習慣,該有括號的地方不要偷懶啊..



相關參考


Visual Basic 中的運算子優先順序