Utilice la declaración de switch en C++
-
Usar la declaración
switch
para construir escenarios de rutas de código multi-caso -
Use la palabra clave
default
para especificar una ruta de código por defecto en elswitch
-
Usar la notación de bloque
{}
para declarar las variables locales en diferentes rutas de código
Este artículo explicará varios métodos de cómo usar la declaración switch
en C++.
Usar la declaración switch
para construir escenarios de rutas de código multi-caso
La palabra clave switch
se utiliza de manera similar a otras declaraciones basadas en bloques que evalúan una expresión dada como una condición. La única diferencia es que la expresión debe tener un valor integral comparado con cada ruta de código especificada por las palabras clave case
. Las rutas tienen la siguiente estructura - case label : statements
donde la label
es el valor comparado con la expresión en la condición switch
. Si la expresión coincide con una de las etiquetas, la ejecución del programa se mueve a las sentencias que siguen a esa etiqueta. Observe que si el bloque case
no termina con la sentencia break;
, el programa continuará ejecutando sentencias en todos los bloques case
siguientes hasta que no se alcance el break;
o hasta que el ámbito switch
mismo termine.
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
using std::string;
enum WEEK { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday };
int main() {
int week_day;
cout << "Type the weekday (0-6): ";
cin >> week_day;
if (cin.fail()) {
cout << "Error occured when reading from stream!" << endl;
exit(EXIT_FAILURE);
};
switch (week_day) {
case Monday:
cout << "Monday\n";
break;
case Tuesday:
cout << "Tuesday\n";
break;
case Wednesday:
cout << "Wednesday\n";
break;
case Thursday:
cout << "Thursday\n";
break;
case Friday:
cout << "Friday\n";
break;
case Saturday:
cout << "Saturday\n";
break;
case Sunday:
cout << "Sunday\n";
break;
default:
exit(EXIT_FAILURE);
}
exit(EXIT_SUCCESS);
}
Use la palabra clave default
para especificar una ruta de código por defecto en el switch
La palabra clave default
define la etiqueta de caso especial que se ejecuta si ninguno de los casos declarados coincide con la expresión switch
. El punto importante que hay que tener en cuenta es que cada bloque de etiquetas necesita la declaración break;
al final para satisfacer la lógica básica de la construcción de switch
. Observe que el siguiente ejemplo de código demuestra la declaración switch
sin ninguna ruptura, que se comportará de forma bastante abrupta. Si el valor de week_day
coincide con la primera etiqueta Monday
, entonces se ejecutarán todas las sentencias cout
, incluyendo la que está junto a la etiqueta por defecto. Por otro lado, si el valor de week_day
no coincide con ninguna etiqueta del caso, entonces se ejecutarán las sentencias cout
que empiecen con la etiqueta default
.
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
using std::string;
enum WEEK { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday };
int main() {
int week_day;
cout << "Type the weekday (0-6): ";
cin >> week_day;
if (cin.fail()) {
cout << "Error occured when reading from stream!" << endl;
exit(EXIT_FAILURE);
};
switch (week_day) {
case Monday:
cout << "Monday\n";
case Tuesday:
cout << "Tuesday\n";
case Wednesday:
cout << "Wednesday\n";
case Thursday:
cout << "Thursday\n";
case Friday:
cout << "Friday\n";
default:
cout << "Wrong number specified!\n";
case Saturday:
cout << "Saturday\n";
case Sunday:
cout << "Sunday\n";
}
exit(EXIT_SUCCESS);
}
Usar la notación de bloque {}
para declarar las variables locales en diferentes rutas de código
Como otras declaraciones basadas en bloques, el cuerpo switch
tiene el alcance en el que se pueden declarar las variables, pero los casos requieren que el usuario tenga variables locales en cada construcción case
. Nótese que las sentencias de cada ruta case
tienen un alcance compartido a menos que se declaren dentro de un bloque separado dentro de {}
. Por lo tanto, si una variable se inicializa en un case
, las declaraciones en otros casos no pueden referirse a la misma variable. El siguiente ejemplo implementa la declaración switch
donde hay un bloque local para el case Friday
y la variable dentro no se ve desde otros cases
.
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
using std::string;
enum WEEK { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday };
int main() {
int week_day;
cout << "Type the weekday (0-6): ";
cin >> week_day;
if (cin.fail()) {
cout << "Error occured when reading from stream!" << endl;
exit(EXIT_FAILURE);
};
switch (week_day) {
case Monday:
cout << "Monday\n";
break;
case Tuesday:
cout << "Tuesday\n";
break;
case Wednesday:
cout << "Wednesday\n";
break;
case Thursday:
cout << "Thursday\n";
break;
case Friday: {
string str = "Friday";
cout << str << endl;
break;
}
case Saturday:
cout << "Saturday\n";
break;
case Sunday:
cout << "Sunday\n";
break;
default:
exit(EXIT_FAILURE);
}
exit(EXIT_SUCCESS);
}
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook