簡體   English   中英

令人困惑的增量行為

[英]Confusing increment behaviour

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

假設在loop()中調用loop()

  • i將在第一個示例中溢出。

  • 在第二個示例中,在第一次迭代后將其固定為2的值。

您可能還需要添加一些延遲,因為有時您可能會錯過第一個Serial.println();

像這樣:

int i = 1;

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

希望能幫助到你!

如果您想讓第一個示例的工作時間更長。 將“ int”更改為“ long”。

int只能存儲2個字節。 -32,768至32,767。 您將很快達到這個數字。 long可以存儲4個字節。 -2,147,483,648至2,147,483,647。 這將需要花些時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM