循环中不保留变量值

时间:2015-02-19 21:08:34

标签: c++ arduino

我面临一个奇怪的问题,我无法真正理解我做错了什么......一定有什么东西!

我会很快解释一下...... 我正在为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();
    }
}

我试图调试我的问题......

在输入“找到”的if块后,标志设置为 true ,确实“标志值2:”是 true 就像“旗值3:”,但是 在下一次迭代中,“标志值1:”实际上是 false ......

怎么了?请赐教!感谢

1 个答案:

答案 0 :(得分:1)

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