switch
/case
¶
Like if statements, A switch
statement controls
program flow by allowing you to specify different code that should be
executed under various cases.
The general syntax looks like this:
switch (var) {
case val1:
// statements
break;
case val2:
// statements
break;
...
default:
// statements
}
Where var
is a variable whose value to investigate, and the
val1
, val2
after each case
are constant values that
var
might be.
Description¶
A switch
statement compares the value of a variable to the values
specified in case
statements. When a case
statement is found
whose value matches that of the variable, the code in that case
statement is run.
Here’s a more concrete example:
switch (var) {
case 1:
doThing1();
break;
case 2:
doThing2();
break;
}
afterTheSwitch();
In the above example, if var == 1
, then the code beginning on the
line after case 1
gets executed. That is, if var
is one,
doThing1()
gets called first, and then the break
statement is
executed.
The break
keyword exits the switch
statement, and is typically
used at the end of each case
. Since there is a break
at the
end of case 1
, the switch
statement exits, and the next line
to be run is the one which calls afterTheSwitch()
.
Without a break
, the switch
statement will continue executing
the following case
expressions (“falling-through”) until a
break
(or the end of the switch statement) is reached. Let’s
pretend the switch
looked like this instead:
switch (var) {
case 1:
doThing1();
// no break statement anymore
case 2:
doThing2();
break;
}
afterTheSwitch();
Now, if var
is one, doThing1()
gets executed like before.
However, without a break
, the code would continue to be executed
line-by-line, so doThing2()
would be called next. At this point,
a break
has been reached, so the program continues by calling
afterTheSwitch()
. This is usually not what you want, which is why
each case
usually has a break
at the end.
Writing “default:
” instead of a case
statement allows you to
specify what to do if none of the case
statements matches. Having
a default
is optional (you can leave it out), but if you have one,
it must appear after all of the case
statements. Let’s add a
default
to the switch
we’ve been discussing:
switch (var) {
case 1:
doThing1();
break;
case 2:
doThing2();
break;
default:
doSomethingElse();
}
afterTheSwitch();
If var
is one, then doThing1()
gets called. If var
is
two, doThing2()
gets called. If var
is anything else,
doSomethingElse()
gets called. As stated above, a default
is
optional. If you’re missing one and none of the case
statements
match, the switch
does nothing at all, as if it weren’t there.
switch
statements are often used with an enum
value as the variable to compare. In this case, you can write down
all of the values the enum
takes as case
statements, and be
sure you’ve covered all the possibilities.
See Also:¶
License and Attribution
Portions of this page were adapted from the Arduino Reference Documentation, which is released under a Creative Commons Attribution-ShareAlike 3.0 License.