main
-
hey leute,
kann mir jemand den unterschied möglichst einfach erklären, der zwischen "void" und "int" besteht, wenn ich den "main"-teil schreiben möchte, alsoint main()
{}
oder
void main()
{}
danke schonmal
-
int main ist Standardkonform, void main nicht.
-
Das "int" vor main() beschreibt den Rückgabetyp der Funktion ( falls du dich noch nicht mit Funktionen befasst hast ist das etwas schwer zu verstehen ).
Seit dem neuen C++ Standard musst du "return 0" (einen int wert) nicht mehr hin schreiben, und daher kannst du ebenso "void" schreiben, was so viel bedeutet wie, die Funktion hat keinen Rückgabetypen
-
dfsaf schrieb:
Seit dem neuen C++ Standard musst du "return 0" (einen int wert) nicht mehr hin schreiben, und daher kannst du ebenso "void" schreiben, was so viel bedeutet wie, die Funktion hat keinen Rückgabetypen
Quatsch. Weder ist das erst seit dem neuen C++-Standard so, noch bedeutet ein fehlendes return 0, dass da nichts zurück gegeben würde. Ein Verlassen der main (und nur der main!) ohne return, bedeutet return 0. Das war in C++ schon immer so. Und der Rückgabetyp einer Funktion ist ohnehin unabhängig davon, was ein return in der Funktion macht. Wenn man aus einer normalen Funktion mit int-Rückgabewert ohne ein return rauslaufen kannst, dann gibt sie trotzdem einen int zurück. Ist dann eben undefiniertes Verhalten, wenn der Fall eintritt. Der Rückgabetyp einer Funktion wird durch ihre Signatur festgelegt und kann nicht geändert werden. Und die vorgegebenen standardkonformen Signaturen für main erlauben nur int als Rückgabetyp, das war (in C++) auch schon immer so.
-
Und der Rückgabetyp einer Funktion ist ohnehin unabhängig davon, was ein return in der Funktion macht.
Hättest du nicht wenigstens "Gleicht kommt einer und verweist auf ein neues Feature..." ergänzen können?

-
Arcoth schrieb:
Hättest du nicht wenigstens "Gleicht kommt einer und verweist auf ein neues Feature..." ergänzen können?

Es hat mir tatsaechlich in den Fingern gejuckt, das so zu schreiben, aber ich fand das an der Stelle unnoetig verwirrend fuer den Threadersteller.