【发布时间】:2014-11-26 03:41:17
【问题描述】:
假设这个示例代码(source):
#include <stdio.h>
void playgame()
{
printf( "Play game called" );
}
void loadgame()
{
printf( "Load game called" );
}
void playmultiplayer()
{
printf( "Play multiplayer game called" );
}
int main()
{
int input;
printf( "1. Play game\n" );
printf( "2. Load game\n" );
printf( "3. Play multiplayer\n" );
printf( "4. Exit\n" );
printf( "Selection: " );
scanf( "%d", &input );
switch ( input ) {
case 1: /* Note the colon, not a semicolon */
playgame();
break;
case 2:
loadgame();
break;
case 3:
playmultiplayer();
break;
case 4:
printf( "Thanks for playing!\n" );
break;
default:
printf( "Bad input, quitting!\n" );
break;
}
getchar();
return 0;
}
我们应该在last default 的情况下使用break; 吗?如果我删除它,我会看到该程序的相同行为。但是,我看到其他示例在 default 案例中也使用了 break;。
为什么?有什么原因吗?
【问题讨论】:
-
如果
break是最后一个,则在任何 大小写标签之后,您不需要。不管是default还是其他都与此无关。 -
使用选项
-pedantic最新版本的 gcc 警告在最后一个case之后缺少break。 -
@alk 我被 Eclipse 警告过,没有这个标志。这是编译命令:
gcc -std=c99 -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"main.d" -MT"main.d" -o "main.o" "../main.c"。也许-Wall就足够了。 -
"也许 -Wall 就足够了。":更好! :-)
标签: c switch-statement break