User Tools

Site Tools


en:reference:language:goto

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

en:reference:language:goto [2017/04/07 10:03] (current)
Line 1: Line 1:
 +====== goto ======
 +
 +
 +Transfers program flow to a labeled point in the program
 +===== Syntax =====
 +
 +label:
 +goto label; <​nowiki>//​ sends program flow to the label</​nowiki>​
 +===== Tip =====
 +
 +The use of goto is discouraged in C programming,​ and some authors of C programming books claim that the goto statement is never necessary, but used judiciously,​ it can simplify certain programs. The reason that many programmers frown upon the use of goto is that with the unrestrained use of goto statements, it is easy to create a program with undefined program flow, which can never be debugged.
 +
 +
 +With that said, there are instances where a goto statement can come in handy, and simplify coding. One of these situations is to break out of deeply nested for loops, or if logic blocks, on a certain condition.
 +===== Example =====
 +<code cpp>
 +for(byte r = 0; r < 255; r++){
 +  for(byte g = 255; g > -1; g--){
 +    for(byte b = 0; b < 255; b++){
 +      if (analogRead(0) > 250){ 
 +        goto bailout;
 +      }
 +      // more statements ... 
 +    }
 +  }
 +}
 +bailout:
 +</​code>​
  
en/reference/language/goto.txt · Last modified: 2017/04/07 10:03 (external edit)