Co oznacza powrót do zera w języku C?


Najlepsza odpowiedź

Zakładam, że mówisz o funkcji „main ()”?

W systemie UNIX / Linux, gdzie wynaleziono C (i prawdopodobnie w innych systemach operacyjnych), gdy program kończy pracę, zwraca „status wyjścia”, którego system, który go uruchomił, może użyć, aby stwierdzić, czy program się powiódł, czy nie.

Zwrócony wynik zero oznacza „Wszystko działało OK!” – wynik niezerowy wskazuje na jakiś rodzaj kodu błędu.

Nie jest on używany zbyt często (jeśli w ogóle) w środowiskach graficznych, w których ludzie uruchamiają programy za pomocą ikony lub czegoś podobnego. Ale w aplikacjach wiersza poleceń to dar niebios.

Weźmy na przykład narzędzie „make” – które służy do kompilowania i łączenia skomplikowanych aplikacji. Różne kompilatory i konsolidatory zwracają „0”, gdy program, nad którym pracują, został poprawnie skompilowany – lub „zwracają 1”, jeśli nie został skompilowany.

Program „make” sprawdza wynik status każdego uruchomionego programu – i przerywa budowanie, jeśli któryś z nich zwraca wartość inną niż zero.

To bardzo przydatna rzecz.

Mam program, który napisałem wykonuje pewne przetwarzanie obrazu. Jeśli odczytywany plik jest uszkodzony, zwraca „zwraca 2” – jeśli plik nie istnieje, zwraca „zwraca 1” i tylko jeśli wszystko działa poprawnie, zwraca „0”.

Teraz – jeśli mam do zbudowania jakiś skomplikowany program, który ma obrazy wbudowane w jego pakiet wydania – mogę sprawić, że plik Makefile uruchomi program do przetwarzania obrazu – a jeśli z jakiegoś powodu to się nie powiedzie – spowoduje to przerwanie działania „make” może to naprawić.

Wszystkie narzędzia wiersza poleceń systemu UNIX / Linux zwracają niezerową wartość błędu – więc nawet jeśli użyjesz tylko standardowego programu „rm” do usunięcia pliku – wykona „Zwraca 0”, jeśli plik został pomyślnie usunięty lub „zwraca 1”, jeśli nie można go było usunąć z jakiegokolwiek powodu.

Kilka programów zwraca różne kody w zależności od tego, co dokładnie poszło nie tak – ale jest to sprawiedliwe nietypowe.

Zauważ również, że kiedy wywołujesz funkcję „exit (0)” – parametr „0” jest również statusem powrotu… tak samo jak „exit (0)”, gdy wszystko działa dobrze i „ exit (1) ”, gdy nie są.

Odpowiedź

w wielu różnych miejscach możesz wykonać instrukcję return 0 w C, więc to pytanie da różne odpowiedzi.

Niech odpowiadam na jeden konkretny przypadek:

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

{

...

return 0;

}

Dlaczego zwracamy 0 z main?

W rodzinie * IX systemów operacyjnych, na przykładzie najpierw UNIX, a potem Linux, istnieje program z pojedynczym kodem zakończenia będącym liczbą całkowitą, nominalnie używane do wskazania sukcesu lub niepowodzenia.

W większości przypadków wartość 0 oznacza sukces, a wartość niezerowa oznacza niepowodzenie, przy czym wartość zwykle wskazuje określone informacje o błędzie.

Programy w językach C i C ++ działające w systemach * IX udostępniają ten kod wyjścia w postaci liczby całkowitej przekazanej do biblioteki standardowej funkcji exit () lub liczby całkowitej zwrócony z main () .

Zatem w tym przypadku zwracamy 0 z main, aby wskazać systemom * IX, że program zakończył działanie z kodem sukcesu.

-Znak

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *