【问题标题】:c lang if condition 1 or condition 2 and condition 3 or condition 4c语言if条件1或条件2和条件3或条件4
【发布时间】:2018-04-08 19:45:00
【问题描述】:

尝试制定正确的 if 条件测试。我只想在两个楼层锁都在线(不报告 eStatusLockUnknown)时采取行动。我试过的两个测试如下。调试时,我可以看到两个地板锁都在报告*.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
   }

【问题讨论】:

    标签: microchip xc16


    【解决方案1】:

    首先是错误的,因为您在常量上而不是条件上执行||

    第二个是错误的,因为&&|| 绑定得更紧密。您需要在最外面的 || 条件周围加上括号。

    以下应该做你想做的。

    LockState headLockState = sLockStatus[eHeadFloorLock].lockState;
    LockState footLockState = sLockStatus[eHeadFloorLock].lockState;
    
    if (( headLockState == eStatusLockIndeterminate
         || headLockState == eStatusLockEngaged
         || headLockState == eStatusLockStowed
         || headLockState == eStatusLockFullyEngaged )
       && ( footLockState == eStatusLockIndeterminate
         || footLockState == eStatusLockEngaged
         || footLockState == eStatusLockStowed
         || footLockState == eStatusLockFullyEngaged ))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-02
      • 1970-01-01
      • 1970-01-01
      • 2015-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-07
      相关资源
      最近更新 更多