2

正しい if 条件テストを定式化しようとしています。両方のフロア ロックがオンラインの場合にのみアクションを実行したい (eStatusLockUnknown を報告しない)。私が試した2つのテストは以下のとおりです。デバッグ時に、両方のフロア ロックが を報告していることがわかりますが*.lockState = eStatusLockIndeterminate、アクション コードには当てはまりません。Microchip xc16 v1.25 コンパイラ。

if (( sLockStatus[eHeadFloorLock].lockState == ( eStatusLockIndeterminate 
|| eStatusLockEngaged || eStatusLockStowed || eStatusLockFullyEngaged ))
   && ( sLockStatus[eFootFloorLock].lockState == ( eStatusLockIndeterminate || eStatusLockEngaged || eStatusLockStowed || eStatusLockFullyEngaged )))
{
    // take action
}

if (( sLockStatus[eHeadFloorLock].lockState == eStatusLockIndeterminate )
     || ( sLockStatus[eHeadFloorLock].lockState == eStatusLockEngaged )
     || ( sLockStatus[eHeadFloorLock].lockState == eStatusLockStowed )
     || ( sLockStatus[eHeadFloorLock].lockState == eStatusLockFullyEngaged )
   && ( sLockStatus[eFootFloorLock].lockState == eStatusLockIndeterminate )
     || ( sLockStatus[eFootFloorLock].lockState == eStatusLockEngaged )
     || ( sLockStatus[eFootFloorLock].lockState == eStatusLockStowed )
     || ( sLockStatus[eFootFloorLock].lockState == eStatusLockFullyEngaged ))
   {
      // take action
   }
4

1 に答える 1