Como era de esperar, el compilador (VisualStudio 2008) dará una advertenciaFunción con valor de retorno que falta, el comportamiento en tiempo de ejecución
C4715 advertencia: 'doSomethingWith': no todas las rutas de control devuelven un valor
al compilar el código siguiente:
int doSomethingWith(int value)
{
int returnValue = 3;
bool condition = false;
if(condition)
// returnValue += value; // DOH
return returnValue;
}
int main(int argc, char* argv[])
{
int foo = 10;
int result = doSomethingWith(foo);
return 0;
}
Pero el programa se ejecuta bien. El valor de retorno de la función doSomethingWith() es 0.
Es solo un comportamiento indefinido, o hay una cierta regla sobre cómo se crea/calcula el valor del resultado en el tiempo de ejecución. ¿Qué sucede con los tipos de datos que no son POD como valor de retorno?
Eche un vistazo a esta respuesta: http://stackoverflow.com/questions/1610030/why-can-you-return-from-a-non-void-function-without-returning-a-value- sin-pro/1610454 # 1610454 –
@fnieto: Ah, ya veo, esta es una muy buena respuesta. No lo encontré, sin embargo, antes de preguntar ... – nabulke