循环时未保留变量值

Variable value not kept in while loop

本文关键字:变量值 保留 循环      更新时间:2023-10-16

我面临一个奇怪的问题,我真的不明白我做错了什么。。。一定有什么!

我很快就会解释。。。我正在为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:"是true就像"标记值3:一样,但是在下一次迭代中,"标志值1:"实际上是false。。。

怎么了?请开导我!感谢

由于while循环的条件是!flag,因此在逻辑上不可能有flag为真的迭代。因此,您认为应该发生的行为可能不会