Что должно основной () возврат в C и C++?

В моем случае путь JAVA не был установлен в переменные Env. Начал работать после того, как правильный путь был установлен в Env PATH.

Введите javac в командной строке и убедитесь, что JAVA PATH верен.

662
задан Community 23 May 2017 в 12:10
поделиться

6 ответов

Возвращаемое значение для main должно указать как программа, из которой выходят. Нормальный выход обычно представлен 0 возвращаемыми значениями от main. Аварийный выход обычно сообщается ненулевым возвратом, но нет никакого стандарта для того, как интерпретируются ненулевые коды. Также, как отмечено другими, void main() явно запрещается стандартом C++ и не должен использоваться. Допустимый C++ main подписи:

int main()

и

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

, который эквивалентен [1 113]

int main(int argc, char** argv)

, также стоит отметить, что в C++, int main() может быть оставлен без оператора возврата, в которой точке это принимает значение по умолчанию к возврату 0. Это также верно с программой C99. Должен ли return 0; быть опущен или не открыт для дебатов. Диапазон действительной программы C основные подписи намного больше.

кроме того, эффективность не является проблемой с эти main функция. Это может только быть введено и оставлено однажды (маркировка запуска и завершения программы) согласно стандарту C++. Для C случай отличается, и повторно вводящий main() позволяется, но должен избежаться.

531
ответ дан Deduplicator 23 May 2017 в 12:10
поделиться

У меня создалось впечатление, что стандарт определяет, что основной не нуждается в возвращаемом значении, поскольку успешным возвратом была базирующаяся ОС (нуль в, можно было быть или успехом или отказом в другом), поэтому отсутствие возврата было сигналом для компилятора для вставки самого успешного возврата.

Однако я обычно возвращаюсь 0.

2
ответ дан graham.reeds 23 May 2017 в 12:10
поделиться

Следует иметь в виду, что, даже при том, что Вы возвращаете интервал, некоторые Ose (Windows) усекают возвращенное значение к единственному байту (0-255).

7
ответ дан Ferruccio 23 May 2017 в 12:10
поделиться

Возвратитесь 0 на успехе и ненулевой для ошибки. Это - стандарт, используемый UNIX и сценариями DOS для обнаружения то, что произошло с программой.

28
ответ дан Lou Franco 23 May 2017 в 12:10
поделиться

Я полагаю, что main() должен возвратиться или EXIT_SUCCESS или EXIT_FAILURE. Они определяются в stdlib.h

58
ответ дан phoxis 23 May 2017 в 12:10
поделиться

Принятый ответ, кажется, предназначен для C++, таким образом, я думал, что добавлю ответ, который принадлежит C, и это отличается несколькими способами.

ISO/IEC 9899:1989 (C90):

main() должен быть объявлен как также:

int main(void)
int main(int argc, char **argv)

Или эквивалентный. Например, int main(int argc, char *argv[]) эквивалентно второму. Далее, int тип возврата может быть опущен, поскольку это - значение по умолчанию.

, Если реализация разрешает, это, main() может быть объявлен другими способами, но это делает реализацию программы определенной, и больше строго приспосабливание.

стандарт определяет 3 значения для возврата, которые строго соответствуют (то есть, не полагается на определенное поведение реализации): 0 и EXIT_SUCCESS для успешного завершения, и EXIT_FAILURE для неудачного завершения. Любые другие значения нестандартны и определенная реализация. main() должен иметь явное return оператор в конце для предотвращения неопределенного поведения.

Наконец, нет ничего неправильно с точки зрения стандартов с вызовом main() из программы.

ISO/IEC 9899:1999 (C99):

Для C99, все совпадает с выше кроме:

  • int тип возврата не может быть опущен.
  • можно опустить оператор возврата от [1 112]. Если Вы делаете, и main() законченный, существует неявное return 0.
155
ответ дан J...S 23 May 2017 в 12:10
поделиться