почему мы используем любое значение в функции выхода в цикле на языке c - PullRequest
0 голосов
/ 12 февраля 2010

В инструкциях цикла языка C / C ++ мы используем exit (0) или exit (1) или другие значения. Что нужно для этого значения, какова роль этого значения в цикле, когда мы выходим из цикла, и каково значение 1 и 0 в exit ()?

Ответы [ 9 ]

9 голосов
/ 12 февраля 2010

exit () завершит процесс, а не цикл. Для аргумента это статус выхода (0, EXIT_SUCCESS, EXIT_FAILURE): http://www.opengroup.org/onlinepubs/000095399/functions/exit.html

Предложение: прежде чем спрашивать, вам следует поискать и прочитать документацию по функциям или языковой функции.

4 голосов
/ 12 февраля 2010

Вы не используете exit () для выхода из цикла. exit завершит работу всей вашей программы.

Номер, который вы указываете функции выхода, будет кодом выхода вашей программы.

Обычно значение выхода 0 указывает, что программа успешно завершилась.

Ненулевое значение обычно является идентификатором ошибки для программы, используемым для указания того, что

  1. Сбой программы
  2. число обычно указывает, почему это не удалось
1 голос
/ 12 февраля 2010

Популярные операторы для завершения языкового цикла: break, continue, goto, return, throw и exit. Есть и другие функции, которые могут выйти из цикла, но вы можете исследовать их самостоятельно.

Оператор break выходит из ближайшего цикла. Выполнение возобновляется после окончания цикла.

Оператор continue приводит к тому, что выполнение начинается с начала цикла. Заявления после continue не будут выполнены. Это может или не может выйти из цикла, в зависимости от вашей педантичности.

Оператор goto может использоваться для выхода из цикла. Поместите метку вне петли и используйте goto.

Оператор return выйдет из функции. Если функция main, она завершит программу.

Оператор throw выйдет из цикла и текущей функции. Выполнение возобновляется с ближайшего оператора catch или завершает программу, если не найдено соответствующих операторов catch.

Функция exit выйдет из цикла и завершит программу. Значения, переданные в exit, будут переданы в операционную систему после завершения программы. Некоторые операционные системы позволяют использовать возвращаемое значение программы в скрипте. Значения 0 и 1 для exit зависят от ОС; некоторые используют 0, чтобы указать успешное завершение. Другие значения могут указывать причины прекращения.

Другие методы для выхода из цикла, некоторые зависят от реализации неопределенного поведения :

  1. Удовлетворить окончание цикла состояние.
  2. Разделить на ноль.
  3. Разыменовать нулевой указатель.
  4. Квадратный корень из отрицательного числа.
  5. Рассчитать длину C-строки без завершающего символа NUL.

Если вы уточните свой вопрос, вы получите лучшие ответы.

1 голос
/ 12 февраля 2010

Ммм ... нет, у тебя это сильно не так.

В Cish, exit завершает всю программу . Если вы просто хотите остановить цикл, используйте break. Если вы хотите остановить итерацию текущего цикла и перейти к следующей, вы используете continue.

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

0 голосов
/ 12 февраля 2010

Возможно, вы путаете return(x) и exit(x). return отправляет информацию обратно вызывающей функции, exit завершает весь процесс, давая статус выхода среде, которая запустила процесс (если есть). Значения, возвращаемые функциями в C, часто являются значениями ошибок, но их значение зависит от семантики процесса; значение exit зависит от семантики среды.

Думай об этом как о корабле; return похоже на сообщение, переданное непосредственному руководителю, и может указывать на то, почему не удалось очистить колоду сегодня и почему проект был заброшен; exit - это сообщение, закупоренное бутылкой, чтобы описать, почему и как затонул корабль.

0 голосов
/ 12 февраля 2010

По истерическим ... извините, историческим ... причинам.

Возвращаясь к дням Unix, и все же в Linux, Windows и т. Д., И т. Д., Ваша программа не просто запускается одна - она ​​вызывается откуда-то (другая программа, оболочка (bash и т. Д., DOS-приглашение и т. Д.) И они могли бы знать, удалось ли это или нет ...

0 голосов
/ 12 февраля 2010

Значение имеет значение только в том случае, если внешняя программа будет использовать его, чтобы определить, была ли программа выполнена успешно или нет. Обычно программа, которая успешно выполняется, возвращает 0 или больше, а в случае неудачи возвращает -1.

0 голосов
/ 12 февраля 2010

Вам не важно знать, находитесь ли вы в цикле или нет, если вы используете функцию exit (). Он выйдет из программы и вернет указанное целое число в качестве возвращаемого значения.

В C / C ++ нет возвращаемого значения цикла или чего-то подобного.

0 голосов
/ 12 февраля 2010

С риском звучать избыточно, это код выхода для процесса. Как правило, вы можете определить диапазон значений, указывающих различные степени успеха или неудачи. Традиционно, 0 - это успех, а 1 (или просто ненулевой) - неудача. Затем программа или функция, которая вызвала вашу, может проверить значение (если оно так склонно) и почерпнуть из него представление о том, был ли ваш процесс успешным.

Например, у вас может быть программа, которая копирует файл из местоположения A в B. Если вы не можете скопировать файл, потому что местоположение B защищено от записи, вы можете вернуть -1, и любая другая программа, которая использует вашу как шаг в этом процессе теперь знает, что вы потерпели неудачу, и что ожидать, что файл в местоположении B будет полным и доступным, будет плохой идеей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...