Я думаю, что, возможно, у вас есть два вопроса:
Почему главный() возвращают int
и не void
?
Этот вопрос имеет already been answered in many forms. В основном: для программы, которая называла ее (оболочка, возможно, или вашей среды IDE), чтобы она могла различать успех и различные способы отказа.
Что произойдет, если вы забудете вернуть значение из main()?
В первой стандартизованной версии C (C89) в этом отношении нет ничего особенного в main(). Если вы забыли вернуть значение, поведение было неопределенным. На практике большинство компиляторов будут действовать так, как если бы вы положили return 0;
.
Начиная с C99, если вы не возвращаете значение из main() явно, то main() определен для возврата 0. main() является особым таким образом; другие функции не возвращают ничего неявным образом.
Как Погода Vane сказал в комментариях, ваша программа не может не вернуть значение (на платформах, где «возвращаемое значение» является осмысленной концепцией). В Linux execve() и аналогичные функции возвращают int
, что является возвращаемым значением программы. Если программа была плохой и не собиралась возвращать значение, возвращаемое значение, вероятно, было бы просто произвольным значением (но возможно, что на другой платформе такая программа потерпит крах).
Полезно знать, является ли что-то успешным или неудачным, и вы можете сделать это в зависимости от статуса выхода программы. –
Когда кто-то запускает вашу программу, они могут получить код возврата. В linux вы можете сделать это: 'echo $?', Чтобы увидеть, как вернулась программа, с которой вы только что вернулись. – bruceg
Ничего не происходит * внутренне *, потому что, когда вы возвращаетесь из main(), ваша программа завершена. Возвращаемое значение main() полезно * внешне *, когда ваше приложение завершено. –