Co znamená návrat k nule v jazyce C?


Nejlepší odpověď

Předpokládám, že mluvíte o funkci „main ()“?

V systému UNIX / Linux, kde C bylo vynalezeno (a možná i v jiných operačních systémech), když program ukončí, vrátí „stav ukončení“, podle kterého může systém, který jej spustil, zjistit, zda uspěl nebo selhal.

Vrácený výsledek nuly znamená „Všechno fungovalo dobře!“ – nenulový výsledek označuje nějaký druh chybového kódu.

Toto se příliš nepoužívá (pokud vůbec) v grafických prostředích, kde lidé spouštějí programy z ikony nebo tak něco. Ale v aplikacích příkazového řádku je to dar z nebes.

Vezměte si například nástroj „make“, který se používá ke kompilaci a propojení komplikovaných aplikací. Různé překladače a linkery provedou „návrat 0“, když je program, na kterém pracují správně, zkompilovány správně, nebo „vrátí 1“, pokud nebyl kompilován.

Program „make“ zkoumá návratnost stav každého spuštěného programu – a přeruší sestavení, pokud jeden z nich vrátí něco jiného než nulu.

To je opravdu užitečná věc.

Takže mám program, který jsem napsal provádí nějaké zpracování obrazu. Pokud je soubor, který čte, poškozený, provede „návrat 2“ – pokud soubor neexistuje, provede „návrat 1“ a pouze v případě, že vše funguje dobře, vrátí „0“.

Nyní – pokud mám k sestavení nějaký komplikovaný program, který má obrazy zabudované do jeho vydání – mohu nechat svůj Makefile spustit program pro zpracování obrazu – a pokud z nějakého důvodu selže – rozbije to běh „make“, takže může to opravit.

Všechny nástroje příkazového řádku systému UNIX / Linux vracejí pro selhání nenulovou hodnotu – takže i když k odstranění souboru použijete pouze standardní program „rm“, udělá to „Návrat 0“, pokud byl soubor úspěšně odstraněn, nebo „návrat 1“, pokud jej z jakéhokoli důvodu nelze odstranit.

Několik programů vrací různé kódy podle toho, co se přesně pokazilo – ale je to celkem neobvyklé.

Všimněte si také, že když zavoláte funkci „exit (0)“ – parametr „0“ je také návratový stav … tak udělejte „exit (0)“, když věci fungují skvěle a „ exit (1) ”, pokud nejsou.

Odpovědět

Existuje na mnoha různých místech můžete spustit příkaz návrat 0 v jazyce C, takže tato otázka získá řadu odpovědí.

Nechte odpověděl jsem na jeden konkrétní případ:

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

{

...

return 0;

}

Proč vracíme 0 z main?

V řadě operačních systémů * IX, jejichž příkladem je nejprve UNIX a poté Linux, existuje program s jediným celočíselným ukončovacím kódem, nominálně se používá k označení úspěchu nebo selhání.

Ve většině případů hodnota 0 označuje úspěch a nenulová hodnota je selhání, přičemž hodnota obvykle označuje některé konkrétní informace o chybě.

Programy C a C ++ běžící na systémech * IX poskytují tento kód ukončení buď celočíselnou hodnotou předanou standardní funkci knihovny exit () , nebo celým číslem vráceno z main () .

Takže v tomto případě vrátíme 0 z main, abychom označili systémům * IX, že program byl ukončen kódem úspěchu.

-Mark

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *