切换条件下的默认情况

我有这个代码:

#include 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; } 

该程序不打印任何东西,甚至没有打印。 我发现default有一个拼写错误!
我想知道为什么编译器没有检测到这种语法错误。

defalut只是程序中的一个标签,你可以跳转到goto 。 拥有一个突出显示关键字的编辑器可能会使这个错误更容易被发现。

我还应该注意你的程序可能有一些逻辑错误。 字符'1'1 ,与'2'2

这不是语法错误。 defalut是一个有效的标签,它可能是goto的目标。

提示:如果您使用的是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