1
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;
}
4

3 回答 3

4

假设loop()在循环中调用:

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

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

于 2013-10-25T15:28:06.883 回答
1

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

像这样的东西:

int i = 1;

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

希望能帮助到你!

于 2013-10-25T16:26:15.110 回答
1

如果你想让你的第一个例子工作更长时间。将“int”更改为“long”。

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

于 2013-10-29T00:10:29.733 回答