Случай по умолчанию в состоянии переключения
У меня есть этот код:
#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
!
Я хочу знать, почему эта синтаксическая ошибка не обнаружена компилятором.
Ответы
Ответ 1
defalut
- это всего лишь метка вашей программы, с которой вы можете перейти с помощью goto
. Наличие редактора, выделяющего ключевые слова, могло бы облегчить эту ошибку.
Следует также отметить, что ваша программа может иметь некоторые логические ошибки. Символ '1'
не совпадает с 1
, а также с '2'
и 2
.
Ответ 2
Это не синтаксическая ошибка. defalut
является допустимой меткой, и она может быть целью goto
.
Ответ 3
tip: если вы используете 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