case statement acts as a label, so once the statements in a case block are over, by default the execution falls through to the next case block until unless you take explicit action to escape using break or return. Also, make sure to put an explicit comment wherever you want fall through behavior

One can always remove the expressions from for loop, but still the semilcolons are mandatory. Following is an infinite loop which can only be broken up by statements like break or return:

goto labels can be attached to any statement in the same function as the goto. The scope of a label is the entire function.

non-automatic variables are initialized only once(before program starts executing) and the initializer has to be a constant. Automatic variables are initialized everytime the function or the block in which they are declared is hit. The initializer in this case can be any expression.