todos - visual c++ 15 runtime
¿Por qué el programa siempre devuelve "falso"? (1)
¿Por qué este código siempre devuelve ''falso'' y activa el goto incluso cuando escribo un dígito? ¿Alguien puede ayudarme por favor? ¡Gracias!
char userValue = ''4'';
auto h = true;
tryAgain:
std::cout << "Please type a digit: ";
std::cin >> userValue;
switch (userValue) {
case ''0'':
case ''1'':
case ''2'':
case ''3'':
case ''4'':
case ''5'':
case ''6'':
case ''7'':
case ''8'':
case ''9'':
h = true;
default:
h = false;
}
switch (h) {
case true:
std::cout << "This character is a digit.";
case false:
std::cout << "Wrong! Try again!" << std::endl;
goto tryAgain;
}
Simplemente se olvidó de salir del caso si se ha procesado. De esta forma, se resolverá el caso y manejará el caso false
vez que se haya manejado el caso true
.
switch (h) {
case true:
std::cout << "This character is a digit.";
break;
case false:
std::cout << "Wrong! Try again!" << std::endl;
goto tryAgain;
//not necessarily needed because goto leaves the scope anyway.
//break;
}
El mismo problema aquí, quiebre si no quiere detener la caída:
switch (userValue) {
case ''0'':
case ''1'':
case ''2'':
case ''3'':
case ''4'':
case ''5'':
case ''6'':
case ''7'':
case ''8'':
case ''9'':
h = true;
break;
default:
h = false;
break;
}