C++: ¿Cómo puedo devolver un valor negativo en main.cpp?




return-value negative-number (2)

Como una tarea en la escuela, tenemos que escribir un programa en C ++ y devolver diferentes códigos de error en la página main .

El problema es que tenemos que devolver -2 si ocurre un error específico pero no tengo idea de cómo devolver un valor negativo.

Por ejemplo:

int main()
{ 
    int a = -2; 
    return a;
}

En Windows, esto me da un valor de retorno como: 42232684 y en Linux hay: 253

¿Por qué -2 no está permitido?

¿Y cómo puedo conseguir -2 ?


Del estándar C ++ 11 18.5 / 8:

Si el estado es cero o EXIT_SUCCESS, se devuelve una forma definida por la implementación de la terminación exitosa del estado. Si el estado es EXIT_FAILURE, se devuelve una forma definida por la implementación de la terminación incorrecta del estado. De lo contrario, el estado devuelto está definido por la implementación.

Por lo tanto, es completamente compatible que obtenga diferentes resultados para diferentes plataformas y / o compiladores.


El problema es que lo que se devuelve al sistema operativo es interpretado por el shell del sistema operativo como a TI le gusta, no como le gusta a su programa.

la función principal devuelve un int, y el return -2 es justo lo que su programa tiene que hacer.

253 es -2 en 2s complementa en 8 bits.

El problema -aquí- es una discrepancia entre las especificaciones de C ++ ( int main() ) y la forma en que el shell lo usa. Pero no depende del programa.

La tarea en sí es una trampa.





negative-number