webForumDet fria alternativet

använda return 0; alltid?

C/C++ur C/C++

7 svar · 387 visningar · startad av kobranturre

Medlem sedan maj 2004693 inlägg
Frågan#1

Så här står det att man jämt ska ha

int main()
{
satser
return 0;
}

så ska man jämt ha return 0? till vilken nytta?

Medlem sedan dec. 20003 563 inlägg
#2

Det finns säkert någon här som kan förklara bättre men jag har för mig att OS förväntar sig en 0 tillbaka från programmet vilket säger att exekveringen gick bra.
En 1:a säger att något gick fel.

Medlem sedan nov. 20022 355 inlägg
#3

Man behöver inte returnera 0 eller 1, men vissa kompilatorer kräver det. Det kan dock vara lämpligt att returnera för att vara konsekvent (int(main)) säger ju att det ska retuurneras ett värde...

Medlem sedan maj 20021 466 inlägg
#4

När du felsöker programmet visas numret som du returnerar i output-fönstret. Det kan användas för att veta hur programmet avslutades.

Medlem sedan maj 2004693 inlägg
#5

fortsätter väl på samma tråd.

Jag gjorde ett nybörjar fel och skrev #import <iostream> istället för #include. Men programmet funkade iaf, jag fick rätt utskrift. Vad beror det på? Om jag fattat rätt så ska <iostream> inehålla saker så att man kan använda cout. I detta fall då borde det ju inte bli ngn utskrift, eller?

Medlem sedan dec. 20003 563 inlägg
#6

Practical C Programming skrev:

The line return (0); is used to tell the operating system (UNIX or MS-DOS Windows) that the program exited normally (Status=0).
A nonzero status indicates an error [...]

Är detta ingen standard längre?

Medlem sedan juni 20008 205 inlägg
#7

Det brukar gå att skippa returnsatsen i main, varpå kompilatorn automagiskt lägger till att main returnerar 0. Dessutom hade man i K&R C (d.v.s., innan standardiseringen) möjligheten att ha en void main i stället för int main, och vissa kompilatorer tillåter det fortfarande.

Medlem sedan juli 2000212 inlägg
#8

kobranturre skrev:

fortsätter väl på samma tråd.

Jag gjorde ett nybörjar fel och skrev #import <iostream> istället för #include. Men programmet funkade iaf, jag fick rätt utskrift. Vad beror det på? Om jag fattat rätt så ska <iostream> inehålla saker så att man kan använda cout. I detta fall då borde det ju inte bli ngn utskrift, eller?

Det beror på vilken kompilator som du kör. Exempelvis i Visual C++:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclang/html/_predir_The_.23.import_Directive.asp

Direktivet kan nog verka vara samma effekt som #include men i bakgrunden så händer mycket mer om man kör #import.

i <cstdlib> finns följande konstanter som man kan använda med exit():
EXIT_SUCCESS 0 //Normal termination
EXIT_FAILURE 1 //Abnormal termination. Error in process.

131 ms totalt · 3 externa anrop · v20260731065814-full.02a0f7de
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)