我有两个开关,这两个开关都需要激活,然后我转移到我的程序的下一部分。
通常,开关可以打开或关闭我想运行一个进程,直到两个开关都接通。
我似乎无法概念化的逻辑,我需要写这句话。
我可以使用两个语句来做我想做的事情,例如:
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
的表达式,直到一个或两个变量sw1
和sw2
都false
为止。
试试这个
while(!sw1 || !sw2) {
READ_SWITCHES();
delay();
}
或者
while(!(sw1 && sw2)) {
READ_SWITCHES();
delay();
}
记住,根据德摩根定律,
!(sw1 && sw2)
和!sw1 || !sw2
是等价的。