switch的格式有以下部分:
int number=11; //省略命名空间等前缀
switch (number)
{
case 10:
statement 1;
break;
case 11:
statement 2;
break;
case 12:
statement 3;
break;
default: statement 4;
break;
}
其中包括:
switch( )中的执行对象变量、case后面可能等于的值及其执行代码段、break、default 四种元素。
其中前两种相信都很容易理解,那么来看一下break和default:
1.break
break是告诉程序不再执行code block内的其它代码,跳出函数;
如果我们将第一个case中的break去掉,结果将依然执行statement 2,因为number=11,本来也不执行number=10的操作;
而如果我们将第二个case内的break去掉,输出将为statement2+3,因为此时执行完2后,程序不能跳出函数,将继续向下执行,此时即使number不满足,也将执行statement3。可以这么理解,switch语句是自上而下寻找到符合的case语句,执行其操作,当有break时跳出switch函数;若无break,那么将顺序执行下面操作,此时case更像是一个标签,不起判定的作用。
那么同理,如果将第二个、第三个的break同时去掉,将执行statement2+3+4。
2.default
default相当于设置了一个系统默认值,相当于if语句里的else,当所有case都不满足条件时,便执行default的操作。case标号和default标号与普通标号相同,可以出现在任何地方,并不受位置的影响(default放在其它地方,仍会正常执行),因为switch的执行可以看作go to 到数值匹配的地方。(经过优化,进而比if else函数效率更高)