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

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

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

Например:

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

В Windows это дает мне возвращаемое значение, как: 42232684 а в линуксе есть: 253

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

И как я могу получить -2?

19

Решение

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

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

253 — это -2 в 2 с дополнением на 8 бит.

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

Само задание является ловушкой.

9

Другие решения

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

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

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

3

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

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

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

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

2
По вопросам рекламы [email protected]