es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

C++ Visual Studio muestra “no se retornan todos los caminos”

Estoy creando un juego de piedra papel tijera para una tarea y una de mis funciones está devolviendo una advertencia que dice “no todas las rutas de control devuelven un valor”. Supongo que el problema está en la declaración switch, pero no estoy seguro ya que todo en la declaración está devolviendo un valor.

Aquí está el código si alguien puede ayudar:

“`
int GameChoice()
{
bool loop = true;
while (loop == true)
{
system("cls");
cout << "Elige una de las siguientes opciones:" << endl;
cout << "[1] Piedra" << endl;
cout << "[2] Papel" << endl;
cout << "[3] Tijera" << endl;
cout << "[4] Lagarto" << endl;
cout << "[5] Spock" << endl;
cout << "[6] Terminar el juego" << endl;
cout << "Ingrese su selección: ";
int UserChoice;
cin >> UserChoice;
cout << endl;

<pre><code>switch (UserChoice)
{
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
loop = false;
return UserChoice;
break;
default:
cout << "Opción incorrecta" << endl;
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
system("pause");
return 0;
}
</code></pre>

}
“`

Tags:  

Answer

  1. Avatar for davy.ai

    El mensaje de advertencia “no todos los caminos de control devuelven un valor” significa que existe la posibilidad de que la función no devuelva un valor en algunos casos. En este caso, el problema está en el caso predeterminado de la declaración switch. Aunque tiene una instrucción de retorno, solo devuelve en caso de una elección de usuario incorrecta. Si el usuario ingresa una elección válida, la variable del bucle se establecerá en falso y la función devolverá UserChoice, pero si el usuario ingresa una opción no válida, el bucle continuará y la función llegará al final del bucle while sin devolver un valor.

    Para solucionar esto, puedes agregar otra instrucción de retorno al final de la función, fuera del bucle while, para manejar el caso en el que el bucle nunca llega a una instrucción de retorno. Por ejemplo:

    int GameChoice()
    {
        bool loop = true;
        while (loop == true)
        {
            //...
        }
    
        // Agrega esta instrucción de retorno
        return 0;
    }
    

    Esto asegurará que la función siempre devuelva un valor, incluso si la condición del bucle while nunca se cumple.

Comments are closed.