C++: как я могу вернуть отрицательное значение в main.СРР

в качестве задания в школе, мы должны написать программу на C++ и возвращает различные коды ошибок в main.

проблема в том, что мы должны вернуть -2 Если возникает конкретная ошибка, но я понятия не имею, как вернуть отрицательное значение.

например:

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

в windows это дает мне возвращаемое значение, например:42232684 а в Linux есть:253

почему -2 не допускается?

и как я могу управлять, чтобы get -2?

3 ответов


проблема в том, что то, что возвращается в ОС, затем интерпретируется оболочкой ОС, как ей нравится, а не как нравится вашей программе.

основная функция возвращает int и return -2 - Это то, что должна делать ваша программа.

253 -2 в дополнении 2С на 8 битов.

проблема-здесь-несоответствие между спецификациями C++ (int main()) и способ использования оболочки. Но это не зависит от программы.

само назначение ловушка.


из стандарта C++11 18.5/8:

Если состояние равно нулю или EXIT_SUCCESS, реализация-возвращается определенная форма статуса успешного завершения. Если status является EXIT_FAILURE, возвращается определенная реализацией форма состояния неудачного завершения. В противном случае возвращаемый статус определяется реализацией.

таким образом, он полностью совместим с тем, что вы получаете разные результаты для разных платформ и/или компиляторов.


Unix и linux ограничены 8-битными кодами возврата, -2-0xfe. Который ваша оболочка будет понимать как 254, когда вы echo $?

вы должны возвращать код от 0 до 255.

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

на POSIX-совместимых состояниях выхода ограничены значениями 0-255, диапазон 8-разрядного целого числа без знака.