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 为真的迭代。因此,您认为应该发生的行为可能不会发生。