Beste svaret
Jeg antar at du snakker om “main ()” -funksjonen?
I UNIX / Linux der C ble oppfunnet (og muligens i andre operativsystemer) når et program avsluttes, returnerer det en «exit status» som systemet som startet det kan bruke for å fortelle om det lyktes eller mislyktes.
Et returnert resultat på null betyr «Alt fungerte bra!» – et resultat som ikke er null indikerer en slags feilkode.
Dette brukes ikke mye (hvis i det hele tatt) i grafiske miljøer der folk starter programmer fra et ikon eller noe. Men i kommandolinjeapplikasjoner er det en gave.
Ta for eksempel «make» -verktøyet – som brukes til å kompilere og koble sammen kompliserte applikasjoner. De forskjellige kompilatorene og koblingene gjør «return 0» når programmet de jobber med kompilerte riktig – eller de «returnerer 1» hvis det ikke ble samlet.
«Make» -programmet undersøker returen status for hvert program det kjøres – og avbryter bygningen hvis en av dem returnerer noe annet enn null.
Dette er en veldig praktisk ting.
Så jeg har et program jeg skrev at gjør noe bildebehandling. Hvis filen den leser er ødelagt, gjør den en «retur 2» – hvis filen ikke eksisterer, gjør den «retur 1», og bare hvis alt fungerte OK, «returneres 0».
Nå – hvis jeg har et komplisert program å bygge som har bilder innebygd i utgivelsespakken – kan jeg få Makefile til å utløse bildebehandlingsprogrammet – og hvis det mislykkes av en eller annen grunn – vil det bryte «make» -kjøringen så jeg kan fikse det.
Alle UNIX / Linux kommandolinjeverktøy returnerer en verdi som ikke er null for feil – så selv om du bare bruker standard “rm” -programmet til å slette en fil – vil det gjøre en «Return 0» hvis filen ble slettet, eller «return 1» hvis den ikke kunne slettes av en eller annen grunn.
Noen få programmer returnerer forskjellige koder, avhengig av hva som gikk galt – men dette er ganske uvanlig.
Legg også merke til at når du kaller “exit (0)” -funksjonen – er parameteren “0” også returstatus … så gjør “exit (0)” når ting fungerer bra og “ exit (1) ”når de ikke er det.
Svar
Der a mange forskjellige steder du kan utføre en return 0 uttalelse i C, så dette spørsmålet kommer til å få en rekke svar.
La jeg svarer på en konkret sak:
int main(int argc, char *argv[])
{
...
return 0;
}
Hvorfor returnerer vi 0 fra main?
I * IX-familien av operativsystemer, eksemplifisert av først UNIX og deretter Linux, eksisterer det et program med en enkelt heltallutgangskode, nominelt brukt til å indikere suksess eller fiasko.
I de fleste tilfeller indikerer verdien 0 suksess, og en verdi som ikke er null er en feil, hvor verdien vanligvis indikerer noe spesifikk feilinformasjon.
C- og C ++ – programmer som kjører på * IX-systemer, gir denne utgangskoden enten med et heltall som er sendt til standardbiblioteket exit () -funksjonen, eller heltallet returnert fra main () .
Så i dette tilfellet returnerer vi 0 fra main for å indikere til * IX-systemer at programmet ble avsluttet med en suksesskode.
-Mark