Understanding unconditional branching – the dos and (mostly) don'ts of goto
The goto statement is an immediate and unconditional transfer of program execution to the specified label within a function block. goto causes execution to jump to the label. In current C, unlike the bad old days, goto may not jump out of a function block, and so it may neither jump out of one function into the middle of another nor out of one program into another program (neither were uncommon in those days).
The goto statement consists of two parts. First, there must be a label declared either as a standalone statement, as follows – label_identifier : – or as a prefix to any other statement, like so – label_identifier : statement.
And secondly, there must be a goto statement to that label_identifier statement. The syntax for the goto statement is as follows:
goto label_identifier;
The reason for the goto statement being shunned comes from the bad old days before...