【发布时间】:2012-07-03 16:35:28
【问题描述】:
我有这个代码:
#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;
}
该程序不打印任何内容,甚至不打印NONE。我发现default 有一个错字defalut!
我想知道为什么编译器没有检测到这个语法错误。
【问题讨论】:
-
这是一个很好的例子,为什么你不使用 GOTO GUYS 你正在为失败做准备。
-
@Hans - OP 没有使用 GOTO。不幸的是,它是语言的一部分,编译器没有注意到标签未被使用。
-
我不是说 OP 使用了 GOTO,我只是说
for:、defalut:、if:、void:、do:和this:的任何构造valid 将使您的编程不必要地难以调试。 -
您是否启用了编译器上的所有警告?
-
@KerrekSB - 酷!当我使用
-Wall开关编译它时出现警告。
标签: c