logo

Declaración de cambio C

La declaración de cambio en C es una alternativa a la declaración de escalera if-else-if que nos permite ejecutar múltiples operaciones para los diferentes valores posibles de una sola variable llamada variable de cambio. Aquí, podemos definir varias declaraciones en múltiples casos para los diferentes valores de una sola variable.

La sintaxis de la declaración de cambio en lenguaje c se da a continuación:

 switch(expression){ case value1: //code to be executed; break; //optional case value2: //code to be executed; break; //optional ...... default: code to be executed if all cases are not matched; } 

Reglas para la declaración de cambio en lenguaje C

  1. El cambiar de expresión debe ser de tipo entero o carácter.
  2. El valor del caso debe ser un número entero o una constante de carácter.
  3. El valor del caso solo se puede usar dentro de la declaración de cambio.
  4. El declaración de ruptura en la caja del interruptor no es necesario. Es opcional. Si no se encuentra ninguna declaración de interrupción en el caso, se ejecutarán todos los casos presentes después del caso coincidente. Es conocido como caer a través el estado de la declaración de cambio de C.

Intentemos entenderlo con ejemplos. Suponemos que existen las siguientes variables.

 int x,y,z; char a,b; float f; 
Cambio válidoCambio no válidoCaso válidoCaso no válido
cambiar(x)interruptor(f)caso 3;caso 2.5;
cambiar(x>y)cambiar(x+2.5)caso 'a';caso x;
interruptor (a+b-2)caso 1+2;caso x+2;
cambiar(func(x,y))caso 'x'>'y';caso 1,2,3;

Diagrama de flujo de la declaración de cambio en C

flujo de declaración de cambio en c

Funcionamiento de la declaración de caso de cambio

Primero, se evalúa la expresión entera especificada en la declaración de cambio. Luego, este valor se compara uno por uno con los valores constantes dados en los diferentes casos. Si se encuentra una coincidencia, todas las declaraciones especificadas en ese caso se ejecutan junto con todos los casos presentes después de ese caso, incluida la declaración predeterminada. No hay dos casos que puedan tener valores similares. Si el caso coincidente contiene una declaración de interrupción, todos los casos presentes después se omitirán y el control saldrá del conmutador. De lo contrario, se ejecutarán todos los casos siguientes al caso coincidente.

¿Cómo funciona la declaración de cambio de C?

Repasemos el proceso paso a paso de cómo funciona la declaración de cambio en C:

Considera lo siguiente declaración de cambio :

Programa C:

 #include int main() { int num = 2; switch (num) { case 1: printf('Value is 1
'); break; case 2: printf('Value is 2
'); break; case 3: printf('Value is 3
'); break; default: printf('Value is not 1, 2, or 3
'); break; } return 0; } 

Producción

 Value is 2 

Proceso paso a paso:

  1. El cambiar número de variable es evaluado. En este caso, en uno se inicializa con el valor 2 .
  2. El valor evaluado número (2) se compara con las constantes especificadas en la etiqueta de cada caso dentro del bloque de interruptores .
  3. El declaración de cambio coincide con el valor evaluado (2) con la constante especificada en el segundo caso (caso 2) . Como hay una coincidencia, el programa salta al bloque de código asociado con la caso coincidente (caso 2) .
  4. El bloque de código asociado con caso 2 se ejecuta, lo que imprime 'El valor es 2' a la consola.
  5. El 'romper' La palabra clave está presente en el bloque de código de caso 2 . Como resultado, el programa sale de la declaración de cambio inmediatamente después de ejecutar el bloque de código.
  6. El control del programa continúa después del declaración de cambio y cualquier declaración posterior a la declaración de cambio son ejecutados. En este caso, no hay declaraciones después del cambio, por lo que el programa finaliza.
  7. El declaración de cambio evaluó el valor de la número de variable , encontró una coincidencia con el caso 2, ejecutó el bloque de código correspondiente y luego salió del bloque de interruptores debido a la presencia del declaración de 'rotura' .

Ejemplo de una declaración de cambio en C

Veamos un ejemplo simple de una declaración de cambio de lenguaje C.

 #include int main(){ int number=0; printf('enter a number:'); scanf('%d',&number); switch(number){ case 10: printf('number is equals to 10'); break; case 50: printf('number is equal to 50'); break; case 100: printf('number is equal to 100'); break; default: printf('number is not equal to 10, 50 or 100'); } return 0; } 

Producción

mysql lista todos los usuarios
 enter a number:4 number is not equal to 10, 50 or 100 enter a number:50 number is equal to 50 

Ejemplo de caso de interruptor 2

 #include int main() { int x = 10, y = 5; switch(x>y && x+y>0) { case 1: printf('hi'); break; case 0: printf('bye'); break; default: printf(' Hello bye '); } } 

Producción

 hi 

Palabra clave Break y Default en la declaración Switch

Expliquemos y definamos 'romper' y palabras clave 'predeterminadas' en el contexto de la declaración de cambio, junto con el código de ejemplo y la salida.

1. Romper la palabra clave:

El palabra clave 'romper' se utiliza dentro del bloque de código de cada caso para terminar la declaración de cambio prematuramente. Cuando el programa encuentra un declaración de 'rotura' dentro de un bloque de caja, sale inmediatamente del declaración de cambio , impidiendo la ejecución de bloques de casos posteriores. El declaración de 'rotura' es crucial para evitar declaraciones de cambio' 'caer a través' comportamiento.

Ejemplo:

Tomemos un programa para entender el uso del romper palabra clave Cª.

 #include int main() { int num = 3; switch (num) { case 1: printf('Value is 1
'); break; // Exit the switch statement after executing this case block case 2: printf('Value is 2
'); break; // Exit the switch statement after executing this case block case 3: printf('Value is 3
'); break; // Exit the switch statement after executing this case block default: printf('Value is not 1, 2, or 3
'); break; // Exit the switch statement after executing the default case block } return 0; } 

Producción

 Value is 3 

Explicación:

En este ejemplo, el declaración de cambio evalúa el valor de la número de variable (cual es 3 ) y lo combina con caso 3 . El bloque de código asociado con caso 3 se ejecuta, imprimiendo 'El valor es 3' a la consola. El declaración de 'rotura' dentro caso 3 asegura que el programa salga de la declaración de cambio inmediatamente después de ejecutar este bloque de caso, evitando la ejecución de cualquier otro caso.

2. Palabra clave predeterminada:

Cuando ninguno de los constantes de caso coincidir con el expresión evaluada , funciona como un caso general . Si no existe ningún caso coincidente y Existe el caso 'predeterminado' , el bloque de código asociado con el 'por defecto' se ejecuta el caso. A menudo se utiliza para manejar circunstancias en las que ninguna de las situaciones indicadas se aplica a la entrada proporcionada.

Ejemplo:

Tomemos un programa para entender el uso del palabra clave predeterminada Cª.

 #include int main() { int num = 5; switch (num) { case 1: printf('Value is 1
'); break; case 2: printf('Value is 2
'); break; case 3: printf('Value is 3
'); break; default: printf('Value is not 1, 2, or 3
'); break; // Exit the switch statement after executing the default case block } return 0; } 

Producción

 Value is not 1, 2, or 3 

Explicación:

En este ejemplo, el declaración de cambio examina el valor de la número de variable (cual es 5 ). Debido a que ningún caso coincide con el número, el programa realiza el bloque de código asociado con el caso 'predeterminado' . El declaración de 'rotura' dentro de caso 'predeterminado' garantiza que el programa salga del declaración de cambio después de ejecutar el 'por defecto' bloque de caso.

Ambos 'romper' y palabras clave 'predeterminadas' desempeñan papeles esenciales en el control del flujo de ejecución dentro de una declaración de cambio. El declaración de 'rotura' ayuda a prevenir el comportamiento de caída, mientras que el caso 'predeterminado' proporciona una manera de manejar casos incomparables.

La declaración de cambio de C es fallida

En lenguaje C, la declaración de cambio no se realiza; significa que si no usa una declaración de interrupción en el caso de cambio, se ejecutarán todos los casos posteriores al caso coincidente.

Intentemos comprender el estado de caída de la declaración de cambio mediante el ejemplo que se proporciona a continuación.

 #include int main(){ int number=0; printf('enter a number:'); scanf('%d',&number); switch(number){ case 10: printf('number is equal to 10
'); case 50: printf('number is equal to 50
'); case 100: printf('number is equal to 100
'); default: printf('number is not equal to 10, 50 or 100'); } return 0; } 

Producción

 enter a number:10 number is equal to 10 number is equal to 50 number is equal to 100 number is not equal to 10, 50 or 100 

Producción

 enter a number:50 number is equal to 50 number is equal to 100 number is not equal to 10, 50 or 100 

Declaración de caso de cambio anidado

Podemos usar tantas declaraciones de cambio como queramos dentro de una declaración de cambio. Este tipo de declaraciones se denominan declaraciones de casos de cambio anidados. Considere el siguiente ejemplo.

 #include int main () { int i = 10; int j = 20; switch(i) { case 10: printf('the value of i evaluated in outer switch: %d
',i); case 20: switch(j) { case 20: printf('The value of j evaluated in nested switch: %d
',j); } } printf('Exact value of i is : %d
', i ); printf('Exact value of j is : %d
', j ); return 0; } 

Producción

 the value of i evaluated in outer switch: 10 The value of j evaluated in nested switch: 20 Exact value of i is : 10 Exact value of j is : 20 

Ventajas de la declaración de cambio:

Hay varias ventajas de la declaración de cambio en C. Algunas ventajas principales de la declaración de cambio son las siguientes:

    Legibilidad y claridad:El declaración de cambio proporciona una manera concisa y directa de expresar ramificación multidireccional en el código. Tratar con múltiples casos puede hacer que el código esté más organizado y sea más fácil de leer que múltiples declaraciones anidadas if-else .Eficiencia:El declaración de cambio es generalmente más eficiente que una serie de declaraciones si-si no cuando se trata de múltiples condiciones. Funciona como d mesa de salto directo , lo que lo hace más rápido y optimizado en términos de tiempo de ejecución.Lógica basada en casos:El declaración de cambio naturalmente se adapta a escenarios donde el programa necesita tomar decisiones basadas en valores específicos de una sola variable. Es una forma intuitiva y sencilla de implementar la lógica basada en casos.

El declaración de cambio admite el uso de un caso predeterminado que sirve como opción general para valores que no coinciden con ninguno de los casos proporcionados. Este caso predeterminado maneja entradas inusuales o circunstancias que no están expresamente indicadas.

Desventajas de la declaración de cambio:

Hay varias desventajas de la declaración de cambio en C. Algunas desventajas principales de la declaración de cambio son las siguientes:

    Expresiones limitadas:La expresión utilizada en el declaración de cambio debe resultar en una valor integral (char, int, enum) o un tipo de datos compatible. No puede soportar más expresiones complejas o no constantes , limitando su flexibilidad en algunos escenarios.Incapacidad para comparar rangos:A diferencia de declaraciones si-si no , el declaración de cambio no puede manejar rangos de valores directamente. Cada caso en la declaración de cambio representa un valor constante específico, lo que dificulta el manejo eficiente de un rango de valores.No hay soporte para números de punto flotante:El declaración de cambio solo acepta tipos integrales (enteros) y valores de enumeraciones ; no acepta números de punto flotante. no maneja tipos de datos no integrales como enteros de punto flotante , lo que podría resultar problemático en algunas circunstancias.Comportamiento de caída: Cambiar declaraciones tener 'caer a través' comportamiento por defecto lo que implica que si un caso no incluye un declaración de 'rotura' , la ejecución será 'caer a través' al siguiente bloque de casos. Si no se gestiona adecuadamente, esto podría dar lugar a un comportamiento no deseado.Código duplicado:Usando un declaración de cambio Puede resultar en código duplicado en algunas circunstancias, especialmente cuando numerosos casos exigen las mismas acciones. Si no se gestiona adecuadamente, esto podría dar lugar a la duplicación de código.Los conmutadores anidados pueden volverse complejos:Al tratar con anidado declaraciones de cambio , el código puede volverse complejo y menos legible. Puede que sea necesario un esfuerzo adicional para comprender y mantener dichas estructuras anidadas.