The simplest way to make a loop which does not terminate is to use a "goto" that jumps backwards to the beginning of the list of statements:
infinite_loop: s1; ... s2; goto infinite_loop;
There is a more structured form for this called the "while" statement:
while (1) { s1; ... s2; }
The advantages of the while is that a label is avoided, but most importantly, the curly braces and indenting become a visual clue to the existence of the loop.
If a loop which is executed conditionally is wanted, then the general form of the "while" statement is used:
while (e) s;
which in words is - execute statement 's' while expression 'e' is true. This can be expressed with an "if" and "goto" identically as:
loop_top: if (e) { s; goto loop_top; }
Note that if 'e' is originally false then 's' is not executed at all. Presumably statement 's' alters the value of 'e' if the loop is to terminate.
The flow chart for the "while" statement is:
| v +---<-----------\ | | ^ | / \ | < e >->----\ | \ / T | | v +---+ | | F | s | | v +---+ | | | | | \-->---/
As always, statement 's' can be a block statement, i.e. a list of statements enclosed in curly braces.