我有一个基本的Arduino代码,我希望有两个选项可以退出这个Do-While循环。我简化了原始代码,以突出真正的问题:Do-While无法识别OR ||条件来退出循环。
在这段代码中,我从两个整数变量开始,它们都等于零。一旦它们进入Do-While循环,它们将立即被设置为2,以便它们可以在第一次迭代中立即退出Do-While。
以下是我的代码:
我的问题在于我没有设置fin = 2,因为我想测试OR条件是否有效。但是似乎不能退出Do-While循环,除非它们都等于2。这让我感到奇怪,因为OR条件允许使用双选项退出Do-While,在这种特殊情况下,这些选项是:ending<1 OR (替代选项)..fin<1。此外,如果我改变(其余的代码不变)While条件为AND,它会像我想要的那样行事:因此我有两种方法退出Do-While循环。就像这样:
在这段代码中,我从两个整数变量开始,它们都等于零。一旦它们进入Do-While循环,它们将立即被设置为2,以便它们可以在第一次迭代中立即退出Do-While。
以下是我的代码:
int fin = 0;
int ending = 0;
int counter = 0;
void setup() {
Serial.begin(9600);
}; //void setup
void loop () {
do {
Serial.println("We are IN Do-While #1");
ending = 2;
//fin = 2;
} while ((ending < 1) || (fin < 1)); //I have just one condition for exit the Do-While ending = 1
Serial.println("We are OUT Do-While #1");
delay(3000);
do {
counter++;
} while(counter<=100);
Serial.println("We are OUT Do-While #2");
delay(3000);
}
我的问题在于我没有设置fin = 2,因为我想测试OR条件是否有效。但是似乎不能退出Do-While循环,除非它们都等于2。这让我感到奇怪,因为OR条件允许使用双选项退出Do-While,在这种特殊情况下,这些选项是:ending<1 OR (替代选项)..fin<1。此外,如果我改变(其余的代码不变)While条件为AND,它会像我想要的那样行事:因此我有两种方法退出Do-While循环。就像这样:
} while ((ending < 1) && (fin < 1));
但是在AND条件中,我必须匹配ending >= 1和(同时)fin >= 1的两个条件才能退出循环,难道不是吗?
为什么会发生这种情况?如何解决?