我有这个代码:
#include<stdio.h>
int main()
{
int a=10;
switch(a)
{
case '1':
printf("ONE\n");
break;
case '2':
printf("TWO\n");
break;
defalut:
printf("NONE\n");
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
该程序不打印任何东西,甚至不打印NONE.我发现default有一个错字defalut!
我想知道为什么编译器没有检测到这种语法错误.
Tim*_*per 35
defalut只是程序中的一个标签,你可以跳转到goto.拥有一个突出显示关键字的编辑器可能会使这个错误更容易被发现.
我还应该注意你的程序可能有一些逻辑错误.字符与和'1'不一样1,并且'2'和2.
提示:如果您使用gcc,请添加选项-pedantic.它会警告你未使用的标签:
$ gcc -ansi -Wall -pedantic test.c -o test
test.c: In function ‘main’:
test.c:14:10: warning: label ‘defalut’ defined but not used
Run Code Online (Sandbox Code Playgroud)