switch语句的控制流程能够一次通过并执行各个case部分。
就好像:
switch (color)
{
case 1:
printf("reds");
break;
case 2:
printf("yellows");
break;
case 3:
printf("blues");
break;
default:
printf("whites");
break;
}
就好像:
switch (color)
{
case 1:
printf("reds");
break;
case 2:
printf("yellows");
break;
case 3:
printf("blues");
break;
default:
printf("whites");
break;
}
这时就会根据变量color的值,1,2, 3,或者别的,分别打印reds, yellows, blues, whites
假如改动一下代码:
switch (color)
{
case 1:
printf("reds");
case 2:
printf("yellows");
case 3:
printf("blues");
default:
printf("whites");
}
如果color值为2,程序会答应出yellowsblueswhites, 因为程序的控制流程在执行了第二个printf调用后,会自然地顺序执行下去。
所以,用switch语句有下列注意点:
1。每个case语句的结尾都要加break,如果不需要加的,最好加个注释/* Fall through */说明一下,而default后的那个break只是偶的个人习惯而已,
可以不加的。
switch (color)
{
case 1:
printf("reds");
break;
case 2:
/* Fall through */
case 3:
printf("blues");
break;
default:
printf("whites");
break;
}
2。不要忘记最后那个default 分支。即使程序真的不需要default 处理,也应该保留语句 default : break; 这样做并非多此一举,而是为了防止别人误以为你忘了default 处理。
switch (color)
{
case 1:
printf("reds");
case 2:
printf("yellows");
case 3:
printf("blues");
default:
printf("whites");
}
如果color值为2,程序会答应出yellowsblueswhites, 因为程序的控制流程在执行了第二个printf调用后,会自然地顺序执行下去。
所以,用switch语句有下列注意点:
1。每个case语句的结尾都要加break,如果不需要加的,最好加个注释/* Fall through */说明一下,而default后的那个break只是偶的个人习惯而已,
可以不加的。
switch (color)
{
case 1:
printf("reds");
break;
case 2:
/* Fall through */
case 3:
printf("blues");
break;
default:
printf("whites");
break;
}
2。不要忘记最后那个default 分支。即使程序真的不需要default 处理,也应该保留语句 default : break; 这样做并非多此一举,而是为了防止别人误以为你忘了default 处理。
[Some are referred from <<C Traps and Pitfalls>> and <<High Quality C / C++ Programming Guide>>]