Vad betyder return-to-zero i C-språk?


Bästa svaret

Jag antar att du pratar om funktionen ”main ()”?

I UNIX / Linux där C uppfanns (och eventuellt i andra operativsystem) när ett program avslutas returnerar det en ”exit status” som systemet som startade det kan använda för att berätta om det lyckades eller misslyckades.

Ett returnerat resultat på noll betyder ”Allt fungerade OK!” – ett resultat som inte är noll indikerar någon typ av felkod.

Detta används inte mycket (om alls) i grafiska miljöer där människor startar program från en ikon eller något. Men i kommandoradsapplikationer är det en sken.

Ta till exempel verktyget ”make” – som används för att sammanställa och länka komplicerade applikationer. De olika kompilatorerna och länkarna gör ”return 0” när programmet som de arbetar med kompileras korrekt – eller de ”returnerar 1” om det inte kompilerades.

Programmet ”make” undersöker avkastningen status för varje program som körs – och avbryter byggnaden om en av dem returnerar något annat än noll.

Detta är en riktigt praktisk sak.

Så jag har ett program som jag skrev att gör lite bildbehandling. Om filen den läser är korrupt gör den en ”return 2” – om filen inte finns, gör den ”return 1” och bara om allt fungerade OK ”returneras 0”.

Nu – om jag har något komplicerat program att bygga som har inbyggda bilder i dess släpppaket – kan jag få min Makefile att utlösa bildbehandlingsprogrammet – och om det misslyckas av någon anledning – kommer det att göra ”make” -körningen så jag kan fixa det.

Alla UNIX / Linux-kommandoradsverktyg returnerar ett värde som inte är noll för fel – så även om du bara använder standardprogrammet ”rm” för att radera en fil – kommer det att göra en ”Return 0” om filen har tagits bort eller en ”return 1” om den av någon anledning inte kunde raderas.

Några program returnerar olika koder beroende på vad som exakt gick fel – men detta är ganska ovanligt.

Observera också att när du ringer till ”exit (0)” – är parametern ”0” också returstatus … så gör ”exit (0)” när saker fungerar bra och ” exit (1) ”när de inte är det.

Svara

Det finns en på många olika platser kan du utföra ett return 0 uttalande i C, så den här frågan kommer att få en mängd olika svar.

Låt jag svarar på ett specifikt fall:

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

{

...

return 0;

}

Varför returnerar vi 0 från main?

I * IX-familjen av operativsystem, exemplifierad av först UNIX och sedan Linux, finns det ett program med en enda heltal utgångskod, nominellt används för att indikera framgång eller misslyckande.

I de flesta fall indikerar värdet 0 framgång och ett icke-nollvärde är ett misslyckande, med värdet som vanligtvis indikerar viss specifik information.

C- och C ++ – program som körs på * IX-system tillhandahåller denna utgångskod med antingen ett heltal som skickas till standardbiblioteket exit () -funktionen eller heltalet återvände från main () .

Så i det här fallet returnerar vi 0 från main för att indikera till * IX-system att programmet avslutades med en framgångskod.

-Mark

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *