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-разрядного целого числа без знака.