Falling through switch statements |
|
The problem: When a switch statement evaluates its cases and one of its cases are found to be true, then of all the remaining events listed in the rest of the switch block will execute unless a break is found. Here's an example: int Number = 1; switch (Number) { case 0: cout << "Number is zero"; case 1: cout << "Number is one"; case 2: cout << "Number is two"; } Logically, since Number is 1, then the output would be Number is one; However, Number is oneNumber is two is the output. Without the break keyword, the remaining events fall through and execute until either a break is found later on or the switch block ends. The solution: Here is the correct switch block: switch (Number) { case 0: cout << "Number is zero" <<endl; break; case 1: cout << "Number is one" <<endl; break; case 2: cout << "Number is two" <<endl; break; } Now it will behave the way the you expected it to. Those coming from Visual Basic will note that this isn't necessary in a select case (VB's equivalent to a switch case), and this could be an understandable pitfall. Sometimes (although rarely) you may wish for your case events to fall through--which in that instance you would pull out the breaks. However, most of the time you wouldn't, and you defineately want to watch out for this. |
|
This page is best viewed in 800x600x256. This page was last edited Saturday, July 15, 2000 |