假设这个例子的代码(原代码):
#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;
}
我们在最后一个 default
中使用 break;
吗?如果我移除它,程序的行为似乎没有变化。但是,我发现其他示例中也在 default
中使用了 break;
。
为什么呢?有什么理由吗?
break
。无论是default
还是其他标签都和此无关。 - WhozCraig-pedantic
,最近版本的gcc会在最后一个case
后缺少break
时发出警告。 - alkgcc -std=c99 -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"main.d" -MT"main.d" -o "main.o" "../main.c"
。也许-Wall
就足够了。 - gsamaras