Почему коды возврата свыше 255 возвращают другое число в C ++?

Например…

#include <iostream>

using namespace std;

int main(){return 300;}

Возвращает:

Process finished with exit code 44

??

5

Решение

Стандарт знает только два возвращаемых стандартизированных значения: EXIT_SUCCESS (или ноль) и EXIT_- FAILURE:

3.6.1 / 5 Оператор возврата в main приводит к выходу из функции main (уничтожению любых объектов с автоматическим хранением) и
призвание std::exit с возвращаемым значением в качестве аргумента.

18.5 / 8 (…) Наконец, управление возвращается в среду хоста. Если статус равен нулю или EXIT_SUCCESS, определяемая реализацией форма статуса
успешное завершение возвращается. Если статус EXIT_- FAILURE,
Форма реализации статуса неудачного завершения
вернулся. В противном случае возвращаемый статус определяется реализацией.

Следовательно, не гарантируется, что любое другое целое число будет возвращено как есть.

На MS Windows например, GetExitCodeProcess() Функция возвращает целочисленное значение, поэтому вы получите 300.

На POSIX совместимые системы, такие как Linux, правило таково («только 8 младших значащих битов (т.е. статус & 0377) должен быть доступен ожидающему родительскому процессу »). Так что за 300 это будет 44.

8

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

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector