En la declaración de cambio de C++, la expresión de cada etiqueta de caso debe ser una expresión constante entera.
Por ejemplo, el siguiente programa falla en la compilación.
CPP
/* Using non-const in case label */ #include<stdio.h> int main() { int i = 10; int c = 10; switch(c) { case i: // not a "const int" expression printf("Value of c = %d", c); break; /*Some more cases */ } return 0; }
Poner const antes de i hace que el programa anterior funcione.
CPP
#include<stdio.h> int main() { const int i = 10; int c = 10; switch(c) { case i: // Works fine printf("Value of c = %d", c); break; /*Some more cases */ } return 0; }
Nota: el hecho anterior es solo para C++. En C, ambos programas producen un error. En C, el uso de un literal entero no provoca un error.
Programa para encontrar el número más grande entre dos números usando switch case:
C
#include<stdio.h> int main() { int n1=10,n2=11; // n1 > n2 (10 > 11) is false so using // logical operator '>', n1 > n2 produces 0 // (0 means false, 1 means true) So, case 0 // is executed as 10 > 11 is false. Here we // have used type cast to convert boolean to int, // to avoid warning. switch((int)(n1 > n2)) { case 0: printf("%d is the largest\n", n2); break; default: printf("%d is the largest\n", n1); } // n1 < n2 (10 < 11) is true so using logical // operator '<', n1 < n2 produces 1 (1 means true, // 0 means false) So, default is executed as we // don't have case 1 to be executed. switch((int)(n1 < n2)) { case 0: printf("%d is the largest\n", n1); break; default: printf("%d is the largest\n", n2); } return 0; } //This code is contributed by Santanu
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA