C Sentencia switch

C 判断Toma de decisiones en C

La sentencia switch es una sentencia de flujo de control limitada que se utiliza para ejecutar diferentes bloques de código según el valor de una expresión.

Unaswitchsentencia permite probar los casos en los que una variable es igual a varios valores; cada valor se denomina un case, y la variable probada se examina en cadaswitch casecaso.

Sintaxis

En el lenguaje Cswitchla sintaxis de la sentencia:

switch(expression){ case constant-expression : statement(s); break; /*Opcional*/ case constant-expression : statement(s); break; /*Opcional*/ /*Puede tener cualquier número de sentencias case.*/ default : /*Opcional*/ statement(s); }

Explicación de la sentencia switch:

  • El valor de la expresión después de switch se comparará con el valor constante después de cada case, hasta que se encuentre un valor coincidente o se llegue a default (si existe).
  • Si se encuentra un valor coincidente, se ejecutará el bloque de código después del case correspondiente y luego se saldrá de la sentencia switch.
  • Si no hay un valor coincidente y existe default, se ejecuta el bloque de código después de default.
  • Si no hay un valor coincidente y no existe default, se omite toda la sentencia switch hasta el final.

switchLa sentencia debe seguir las siguientes reglas:

  • Tipo de la expresión switch:La expresión en la sentencia switch debe ser de tipo entero (char, short, int o enum), o una expresión que pueda convertirse implícitamente a tipo entero.

  • Unicidad de las etiquetas case:En la sentencia switch, cada etiqueta case debe ser única; no puede haber valores duplicados.

  • Opcionalidad del caso predeterminado:La etiqueta default en la sentencia switch es opcional. Si no hay una etiqueta case coincidente, se ejecuta el bloque de código bajo la etiqueta default (si existe).

  • Valor constante en las etiquetas case:El valor después de la etiqueta case debe ser una expresión constante, lo que significa que su valor puede determinarse en tiempo de compilación.

  • Orden de las etiquetas case:El orden de las etiquetas case en la sentencia switch no es importante; pueden escribirse en cualquier orden. El programa realiza la comparación en el orden en que aparecen las etiquetas case.

  • Uso de la sentencia break:Al final del bloque de código de cada etiqueta case normalmente se necesita usar la sentencia break para terminar la ejecución de la sentencia switch. Si no hay una sentencia break, el programa continuará ejecutando el código de la siguiente etiqueta case hasta que encuentre una sentencia break o termine la sentencia switch.

  • Anidamiento de la sentencia switch:La sentencia switch puede anidarse dentro de otras sentencias switch, pero hay que tener en cuenta la legibilidad y la complejidad del código.

  • Alcance de las etiquetas case y de las expresiones:Las etiquetas case de la sentencia switch pueden ser expresiones constantes enteras, pero no pueden ser números de punto flotante ni cadenas.

Diagrama de flujo

C 中的 switch 语句

Ejemplo

#include <stdio.h> int main () { /*Definición de variables locales*/ char grade = 'B'; switch(grade) { case 'A' : printf("¡Genial!\n" ); break; case 'B' : case 'C' : printf("Bien hecho\n" ); break; case 'D' : printf("Usted ha aprobado\n" ); break; case 'F' : printf("Es mejor que lo intente de nuevo\n" ); break; default : printf("Calificación no válida\n" ); } printf("Su calificación es %c\n", grade ); return 0; }

Cuando el código anterior se compila y ejecuta, produce los siguientes resultados:

做得好
您的成绩是 B

C 判断Toma de decisiones en C

Otras extensiones