c++ return-value negative-number

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



return-value negative-number (3)

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.

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 ?


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.


Unix y Linux están limitados a códigos de retorno de 8 bits, -2 es 0xfe. ¿Cuál será tu shell que será 254 cuando hagas echo $?

Se espera que usted dé un código de retorno entre 0 y 255.

http://en.wikipedia.org/wiki/Exit_status

en los estados de salida compatibles con POSIX están restringidos a los valores 0-255, el rango de un entero de 8 bits sin signo.