Подтвердить что ты не робот

Почему нам нужно использовать `int main`, а не` void main` в С++?

Зачем нам нужно использовать int main, а не void main в С++?

4b9b3361

Ответ 1

Короткий ответ заключается в том, что для стандарта С++ требуется main() вернуть int.

Как вы, вероятно, знаете, возвращаемое значение из функции main() используется библиотекой времени выполнения как код выхода для процесса. Как Unix, так и Win32 поддерживают концепцию (малого) целого числа, возвращенного из процесса после его завершения. Возврат значения из main() обеспечивает один способ для программиста указать это значение.

Ответ 2

Большинство операционных систем сообщают пользователю или процессу вызова, если приложение было успешным или нет. Это особенно полезно в сценариях, где script может условно входить (если-то) в результаты программы. Что-то вроде:

// pseudo-code
screenscrape  http://mydatasource.com > results.txt
if errorlevel == 0 then
   processfile results.txt
else
   echo Screen Scraping Failed!
end if

Этот статус результата выполняется с помощью возвращаемого значения main.

Хотя некоторые компиляторы разрешают void main, для согласованности и простоты стандарт ANSI требует одного прототипа main:

int main(int argc, char *argv[]);

Поскольку в C аргументы очищаются вызывающим, автор main может пренебречь объявлением или обработкой аргументов argc и argv. Однако, если подпрограммы установки, которые вызывают main, ожидают значение int return и вместо этого не могут найти его, поведение может undefined.

Короткий ответ:

  • Возвращаемое значение main полезно для сценариев.
  • Процедуры установки и очистки, которые вызывают main, нуждаются в совместимом интерфейсе.

Ответ 3

Основная причина изменения

void main() {}

to

int main() {}

в последующих выпусках было уведомить об ошибке в программе во время выполнения операционной системы, на которой она работает

return 0;

идентифицировать программу успешно выполненную, если возвращаемое число, а не 0, означает, что произошла некоторая ошибка, которая возвращает код ошибки. если вы работаете с идентификатором codeblock, см. в журнале построения, если main return 0 обычно отображается

Process terminated with status 0

иначе он отображает код состояния красным цветом, что означает возникшую ошибку

Ответ 4

Из Википедии:

Значение, возвращаемое из основной функции, становится статусом выхода процесса, хотя стандарт C только присваивает конкретное значение двум значениям: EXIT_SUCCESS (традиционно ноль) и EXIT_FAILURE. Значение других возможных возвращаемых значений определяется реализацией.

Ответ 5

Как и в C, поскольку процесс предоставит ОС код выхода.

Вы можете использовать

int main (int argc, char ** argv)
{
  return (0);
}

или

int main (int argc, char ** argv)
{
  exit (0);
}

Это, по крайней мере, в C89 IIRC.

Ответ 6

Поскольку int - это код возврата, программа может вернуться в ОС.

Вы можете запросить это значение, чтобы проверить, была ли операция успешной.

Это было очень полезно при использовании сценариев командной строки.

Ответ 7

Возможно, потому, что имеет смысл полностью выйти с кодом состояния из метода main(). В java мы должны эмулировать это, используя System.exit(), который не является настолько грациозным.

Ответ 8

Когда мы запускаем нашу программу, чтобы проверить, что она выполняется успешно или нет. Поэтому, когда он возвращает 0, это означает, что он истинно и успешно работает, если он возвращает 1, то он не запускается успешно, и это значение int сообщает операционной системе, если программа успешно завершена или нет