Estaba experimentando si puedo usar "lógico o" dentro de la cláusula del caso para una declaración de cambio. Intenté de esta manera para el primer caso y el sistema lo omitió por completo cuando ingresé como "A" o "a" en ambos casos.
# include <iostream> using namespace std; int main () { /* prg. checks if the input is an vowel */ char ch; cout << "please input a word to check if it is vowel or not" << endl; cin >> ch; switch (ch) { case ('A'|| 'a') : cout << "it is vowel" << endl; break; case 'E': cout << "it is vowel" << endl; break; case 'I': cout << "it is vowel" << endl; break; case 'O': cout << "it is vowel" << endl; break; case 'U': cout << "it is vowel" << endl; break; default: cout << "it is not a vowel" << endl; break; }¿Hay una forma adecuada de usar o dentro de la cláusula del caso?
Gracias por la ayuda.
El case ('A'|| 'a') debe escribirse como:
switch (ch) { case 'A': case 'a': cout << "it is vowel" << endl; break; // ... Si coincide con 'A' , pasará al siguiente case (a menos que haya una break en el medio).
En este caso, es posible que desee combinar todas las vocales:
switch (ch) { case 'A': case 'a': case 'E': case 'e': //... all of them ... std::cout << "it is vowel\n"; break; // ... Tenga en cuenta que algunos compiladores emitirán una advertencia para los case fallidos con declaraciones en ellos (que no es el caso anterior). Desde C++ 17, si usa casos fallidos, puede usar el atributo fallthrough para silenciar tales advertencias donde realmente desea una falla.