none
關於IF判斷式的問題 RRS feed

  • 問題

  • 各位前輩好,小弟自己最近在測試一些程式,遇到一個問題不是很懂

    程式碼如下

    Public Function RMDO(ByVal PortNum As Int16, ByVal bState As Boolean) As Boolean Dim bit As Int16 Dim port As Int16 Dim Value As Int16 Dim bitwiseValue As Int16 Dim bDone As Boolean Dim counter As Byte bit = PortNum Mod 16 'get bit bitwiseValue = (1 << bit) ' calculate the bit port = PortNum / 16 'get port While (True) rt = B_DMC_01_get_rm_output_value(0, 1, 0, port, Value) 'get now output state '**************************************************** 'bDone = (bState = If(0 <> (Value And bitwiseValue), True, False)) bState = If(0 <> (Value And bitwiseValue), True, False) bDone=bState '***************************************************** If bDone Then .............

    ....

    ... End Function

    小弟不明白的是如果是寫

                bDone = (bState = If(0 <> (Value And bitwiseValue), True, False))

     當bState =False而Value 與bitwiseValue=1的情形下,為何bDone =False

                而改寫成下列方式

    bState = If(0 <> (Value And bitwiseValue), True, False)
                bDone=bState

    則bDone=True

    請教這是為什麼???

    感謝指教

    2013年1月29日 上午 08:04

解答

  • hi,

    VB跟C語言不同~沒有區分=跟==

    所以VB.NET的=可以做兩數相等的判斷

    也可以做指派變數值的動作

    上面的判斷式(bState = If(0 <> (Value And bitwiseValue), True, False))

    是在判斷bState跟 If(0 <> (Value And bitwiseValue), True, False)是否相等

    並把判斷出來的值塞給bDone

    而下面那個寫法是將If(0 <> (Value And bitwiseValue), True, False)的值塞給bState 

    再把bState 的值塞給bDone


    謙卑學習,持之以恆,才能不斷的Level Up http://www.dotblogs.com.tw/larrynung/


    2013年1月29日 上午 08:11