Arduino中的goto語句


goto是Arduino中的一種控制結構,類似於C語言,用於將程式流程轉移到程式中的另一個點。 強烈建議避免使用它,因為許多程式設計師都認為無需goto就能編寫任何你想要的演算法。

過度使用goto會使程式除錯非常困難,甚至在某些情況下會建立無法除錯的程式流程。 除非你絕對必須使用goto,否則建議繼續閱讀。

語法

使用goto的語法如下:

goto label;

label:
   //statements

示例

以下示例演示了這一點:

void setup() {
   // put your setup code here, to run once:
   Serial.begin(9600);
   Serial.println();
   int x = random(5);

   Serial.print("Value of x is ");Serial.println(x);

   if (x % 2 == 0) {
      goto even_print;
   } else {
      goto odd_print;
   }

   Serial.println("End of setup");

   even_print:
      Serial.println("x is even");
   odd_print:
      Serial.println("x is odd");
}

void loop() {
   // put your main code here, to run repeatedly:
   Serial.println("Looping...");
   delay(1000);
}

輸出

序列埠監視器的輸出如下所示。請注意,我重置了Arduino幾次以獲得不同的x值。

可以看到,當x為偶數時,“x是奇數”也會被列印,因為odd_print標籤位於even_print標籤之後。因此,下一個列印語句緊跟在第一個列印語句之後。這表明even_printodd_print只是標記;它們不會停止程式執行。

goto語句只是使用標籤更改程式流程,但在執行完一個標籤中的語句後,程式會線性地繼續執行下一行(在本例中為odd_print語句)。

此外,請注意“設定結束”從未被列印。這是因為兩個goto語句都使程式流程跳過了該行。這說明一旦執行完標籤內的語句,程式就不會返回到原來的行。它會線性地向前移動,除非當然它遇到另一個goto語句。這個例子應該讓你明白為什麼不鼓勵使用goto

更新於:2021年8月2日

6K+ 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.