我有两个开关,这两个开关都需要激活,然后我转移到我的程序的下一部分。
通常,开关可以打开或关闭我想运行一个进程,直到两个开关都接通。
我似乎无法概念化的逻辑,我需要写这句话。
我可以使用两个语句来做我想做的事情,例如:

Start_Process();

while(!sw1){
    READ_SWITCHES();
    delay();
}

while(!sw2){
    READ_SWITCHES();
    delay();
}

End_Process();

但我相信有更好的办法。
到目前为止,我最好的猜测是:
while(!(sw1 || sw2)){
    READ_SWITCHES();
    delay();
}

但我不相信这是正确的。
因为某些原因这也不太对劲。
while(!sw1 && !sw2){
    READ_SWITCHES();
    delay();
}

我已经做了比这复杂得多的逻辑陈述,但是出于某种原因,我没有看透这个简单的陈述。
谢谢你的帮助。

最佳答案

你需要一个计算到true的表达式,直到一个或两个变量sw1sw2false为止。
试试这个

while(!sw1 || !sw2) {

    READ_SWITCHES();
    delay();
}

或者
while(!(sw1 && sw2)) {

    READ_SWITCHES();
    delay();
}

记住,根据德摩根定律,!(sw1 && sw2)!sw1 || !sw2是等价的。

10-08 20:24