Зачем нам нужно использовать int main
, а не void main
в С++?
Почему нам нужно использовать `int main`, а не` void main` в С++?
Ответ 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
сообщает операционной системе, если программа успешно завершена или нет