while 循环中不保留变量值
Variable value not kept in while loop
我遇到了一个奇怪的问题,我真的不明白我做错了什么...一定有问题!
我稍后会解释...
我正在为 Arduino 平台开发(据我所知,它主要基于 C++),在我的实际代码的一部分中,我有一个 while 循环...
那么问题出在哪里呢?
如果我在 while 循环中设置一个变量(在我的例子中是一个标志),它每次都会被重置,这段代码在函数中...(可能有用)
这里是:
void waitResponse(char* text) {
static bool flag = false;
count = 0;
digitalWrite(GREEN_PIN, HIGH); //Turn OFF Green LED
while (!espSerial.available()) { //Wait until we get some data in...
Serial.println("No data");
notBlockingBlink();
}
while (!flag) { //We got sth
Serial.print("Flag value 1: ");
Serial.println(flag);
while (espSerial.available()) {
Serial.println("In");
if (search(text)) {
flag = true;
Serial.println("Found");
Serial.print("Flag value 2: ");
Serial.println(flag);
break;
} else {
notBlockingBlink();
}
}
Serial.print("Flag value 3: ");
Serial.println(flag);
notBlockingBlink();
}
}
我已尝试调试我的问题...
进入包含“Found”的 if 块后,标志设置为 true,实际上是“”标志值 2:”与“标志值 3:”是 true,但是
在下一次迭代中“标志值 1:”实际上是 false...
怎么了?请赐教!谢谢
因为 while
循环的条件是 !flag
,逻辑上不可能有 flag
为真的迭代。因此,您认为应该发生的行为可能不会发生。
我遇到了一个奇怪的问题,我真的不明白我做错了什么...一定有问题!
我稍后会解释... 我正在为 Arduino 平台开发(据我所知,它主要基于 C++),在我的实际代码的一部分中,我有一个 while 循环...
那么问题出在哪里呢?
如果我在 while 循环中设置一个变量(在我的例子中是一个标志),它每次都会被重置,这段代码在函数中...(可能有用)
这里是:
void waitResponse(char* text) {
static bool flag = false;
count = 0;
digitalWrite(GREEN_PIN, HIGH); //Turn OFF Green LED
while (!espSerial.available()) { //Wait until we get some data in...
Serial.println("No data");
notBlockingBlink();
}
while (!flag) { //We got sth
Serial.print("Flag value 1: ");
Serial.println(flag);
while (espSerial.available()) {
Serial.println("In");
if (search(text)) {
flag = true;
Serial.println("Found");
Serial.print("Flag value 2: ");
Serial.println(flag);
break;
} else {
notBlockingBlink();
}
}
Serial.print("Flag value 3: ");
Serial.println(flag);
notBlockingBlink();
}
}
我已尝试调试我的问题...
进入包含“Found”的 if 块后,标志设置为 true,实际上是“”标志值 2:”与“标志值 3:”是 true,但是 在下一次迭代中“标志值 1:”实际上是 false...
怎么了?请赐教!谢谢
因为 while
循环的条件是 !flag
,逻辑上不可能有 flag
为真的迭代。因此,您认为应该发生的行为可能不会发生。