The goto statement is an unconditional transfer statement that is used in the following format:
Goto statement label;
Where the label is a valid identifier, with a ":" (colon) that appears somewhere inside the function, after the goto statement is executed, the program jumps to the label and executes the subsequent statement.
In addition, the label must be in a function with the goto statement, but it may not be in a loop layer. Usually a goto statement is used with an IF condition statement, and when a condition is met, the program jumps to the label.
The goto statement is usually not used, mainly because it will make the program level unclear, and difficult to read, but in the multi-layered nesting exit, with a goto statement is more reasonable.
Most people learn c more or less when they read or hear the use of a goto statement, but at some point the goto is goto.
eg
#include <stdio.h>#include<stdint.h>#include<string.h>intMainvoid){ for(intI=0;i< -; i++) for(intj=0;j< -; j + +) { if(i+j== -) { Gototest; }}test:printf ("test...\n"); return 0;}
This example is probably the most common jump out of the loop usage, because there is no break. But...
eg
#include <stdio.h>intMainvoid){ intA=2; if(a>2) { for(intI=0;i<Ten; i++) {printf ("i=%d", i); if(i==5) Gototest; }}test:printf ("\r\nyes");return 0;}
The first time you try to use Goto, there is a misunderstanding, that is, if you do not execute the Goto,goto tag will not execute?
I didn't think it was going to happen, but the Goto tab, which is part of the program, is executed even if the Goto,goto tag is not executed (like testing). This gives us the time to write the program with a hidden bug, do not think that Goto does not execute, the label will not be executed.
Summary:
When we use Goto to jump out of a loop or to process a critical code segment, the position of the Goto label must be the location of the exception handling, even if no goto is executed. But most of the time, a goto code snippet is a key code handler, and we don't want the code at the tag to be executed (like exception handling) without a goto, so we can do it in the following way:
eg
#include <stdio.h>intMainvoid){ intflag=0; intA=2; if(a>2) { for(intI=0;i<Ten; i++) {printf ("i=%d", i); if(i==5) {flag=1; Gototest; } } } if(flag==1) {test:printf ("\r\nyes"); }return 0;}
C language Forbidden--goto statement