Подтвердить что ты не робот

Случай по умолчанию в состоянии переключения

У меня есть этот код:

  #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!
Я хочу знать, почему эта синтаксическая ошибка не обнаружена компилятором.

4b9b3361

Ответ 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