令人困惑的增量行为

时间:2013-10-25 15:23:32

标签: c arduino

int i = 1;

void setup() {
  Serial.begin(9600);
}

void loop() {
    if(i == 1){
      Serial.print(i);
    }
    i++;
}

这仅用于打印i一次的值。为什么它会永远打印1?

此代码只能正常编写i一次:

int i = 1;

void setup() {
  Serial.begin(9600);
}

void loop() {
    if(i == 1){
      Serial.print(i);
    }
    i = 2;
}

3 个答案:

答案 0 :(得分:4)

假设在循环中调用loop()

  • i将在第一个示例中溢出。

  • 在第二个示例中,它在第一次迭代后固定为2的值。

答案 1 :(得分:1)

您可能还想添加一些延迟,因为有时您可能会错过第一个Serial.println();

类似的东西:

int i = 1;

void setup() {
  Serial.begin(9600);
  delay(1000); //wait for one second
}

希望它有所帮助!

答案 2 :(得分:1)

如果您希望第一个示例更长时间工作。将“int”更改为“long”。

int只能存储2个字节。 -32,768到32,767。你会很快达到这个数字。 long可以存储4个字节。 -2,147,483,648至2,147,483,647。这将花费一些时间。