¿Cómo obtienen su valor de retorno los programas C ++ cuando no se especifica un retorno en la función?
Hace poco escribí una publicación:
Error extraño en el programa C ++: eliminación del programa de interrupciones de impresión
... en el que estaba tratando de resolver un problema aparentemente desconcertante, en el que eliminar una declaración cout interrumpiría mi programa.
Al final resultó que, mi problema fue que olvidé devolver mi indicador de éxito verdadero / falso que más tarde estaba usando para la lógica.
Pero aparentemente ALGO estaba siendo devuelto y ese algo siempre era cierto si dejaba ese efecto, pero aparentemente "mágicamente" se volvería falso cuando lo sacara.
Mi pregunta para todos ustedes es:
¿Qué determina qué devuelve una función c ++ cuando no se ejecuta ningún comando de retorno dentro de la función? ¿Hay alguna lógica en ello?
Obviamente, olvidar su tipo de devolución es una mala idea. Sin embargo, en este caso, se debió en gran medida a la naturaleza de mi programa: un trabajo de pirateo rápido. Más tarde decidí que no valía la pena incluir un algoritmo para determinar el éxito / el fracaso de la llamada a la función, pero accidentalmente dejé el código dependiente de la devolución.
Desconcertantemente, g ++ no me dio advertencias ni errores al compilar el ejecutable de esta manera:
g++ main.cc -g -o it_util
Mi versión es: g ++ (GCC)4.1.2 20080704 (Red Hat 4.1.2-44)
Nuevamente, para salvar la frustración futura de otros en caso de que cometan el mismo error tonto y se encuentren con el mismo comportamiento aparentemente errático, ¿alguien puede arrojar luz sobre dónde una función sin retorno obtiene su valor de retorno?
¡¡Gracias!!