'switch' '('<int-expr>')'
'{'
{'case' <const-expr>':' <stmt>*}*
['default:'
<stmt>*]
'}'
In this notation, {...} encloses a sequence (note the lack of
quotes around the braces). This construct is useful, because we can
then use {...}* (note the asterisk) to indicate the sequence
in braces can repeat any number of times (including zero).
<int-expr> is an expression that evaluates to an integer
value. This is used to control which case statement gets
control.
<const-expr> is an expression that evalutes to a constant. This
means that it cannot rely on anything that may change during run-time.
The optional default case gets control when no case
statement executes.
Note that in a switch statement, at the end of a case, execution
falls through to the next case or default
block. This is why most case blocks end with a break
statement.