c

Caso predeterminado en una condición de interruptor



(3)

Eso no es un error de sintaxis. defalut es una etiqueta válida, y podría ser el objetivo de un goto .

Tengo este codigo

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

El programa no imprime nada, ni siquiera NONE . Me di cuenta de que el default tenía un error de error defalut !
Quiero saber por qué el compilador no detecta este error de sintaxis.


consejo: si está utilizando gcc , agregue la opción -pedantic . le avisará para las etiquetas no utilizadas:

$ gcc -ansi -Wall -pedantic test.c -o test test.c: In function ‘main’: test.c:14:10: warning: label ‘defalut’ defined but not used


defalut es solo una etiqueta en tu programa a la que puedes saltar con goto . Tener un editor que resalta las palabras clave podría haber hecho que este error sea más fácil de detectar.

También debo tener en cuenta que su programa puede tener algunos errores lógicos. El carácter ''1'' no es lo mismo que 1 , y lo mismo con ''2'' y 2 .