Ein paar fragen eines Neulings
-
Hallo,
nein es wurde nichtmal Kompiliert.
Aber nachdem ich gegooglet hab hab ich#s herausgefunden an was es lag,
ich hatte Vista und müsste ein Paar einstellungen ändern.Okay damit hab ich aber nur "Hello World" zum laufen gebracht.
Irgendetwas stimmt immernoch nicht.Wenn ich
#include <iostream> using namespace std; int Alter; void main() { cout << "Wie alt sind Sie? "; cin >> Alter; cout << '\n'; if(Alter >= 18); { cout << "Sie sind: " << Alter << " Jahre alt\n"; } if(Alter < 18); { cout << "Du bist: " << Alter << " Jahre alt\n"; } cin.get(); return 0; }
Dann kommt:
1>------ Erstellen gestartet: Projekt: Aufgabe 1, Konfiguration: Debug Win32 ------ 1> Aufgabe 1.cpp 1>c:\users\c&a\documents\visual studio 2010\projects\aufgabe 1\aufgabe 1\aufgabe 1.cpp(13): warning C4390: ';': Leere kontrollierte Anweisung aufgetreten; ist dies beabsichtigt? 1>c:\users\c&a\documents\visual studio 2010\projects\aufgabe 1\aufgabe 1\aufgabe 1.cpp(17): warning C4390: ';': Leere kontrollierte Anweisung aufgetreten; ist dies beabsichtigt? 1>c:\users\c&a\documents\visual studio 2010\projects\aufgabe 1\aufgabe 1\aufgabe 1.cpp(21): error C2562: 'main': 'void'-Funktion gibt einen Wert zurück 1> c:\users\c&a\documents\visual studio 2010\projects\aufgabe 1\aufgabe 1\aufgabe 1.cpp(7): Siehe Deklaration von 'main' ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
Obwohl ich den Code Aus dem Tut http://multidev.de/tutorial-programmieren/c++-book.php#22 kopiet habe.
Auserdem ist doch vor Return ein Semikolon.Weis jjemand was ich noch machen kann?
-
Das Semikolon hinter der if-Bedingung ist falsch und es muß "int main()" heißen:
int main() { //... if(Alter >= 18) { } if(Alter < 18) { } }
Ältere Compiler von Microsoft akzeptierten leider auch "void main()", dies ist aber nicht standardkonform.
Nachtrag:
Das Tutorial ist eindeutig nicht auf dem neuesten Stand. Obwohl dort als Datum 2006 angegeben ist, verwendet er dort "Visual C++ 6", und dieser Compiler (mehr als 10 Jahre alt!) entspricht nicht dem aktuellen C++ Standard. Neben dem falschen "void main" werden auch noch die alten Include-Dateien <iostream.h> anstatt <iostream> verwendet.Such dir lieber ein aktuelleres Tutorial...
-
Auch neuere Compiler akzeptieren "void main"... und es ist sehr wohl Standard Conform, wenn Du ein C++ Programm schreibst...
-
Hallo Jochen,
wie kommst du denn darauf? Man muß nicht explizit "return 0;" am Ende der main()-Funktion hinschreiben, aber die Deklaration muß "int main()" lauten, s.a. int main() oder void main()?
Um es noch explizit klarzustellen:
natürlich kann ein spezieller Compiler zusätzlich auch "void main()" erlauben, jedoch wäre dies dann nicht mehr portabel im Sinne von "Standard C++".
-
das 2. sollte schon ein "else if" sein
-
Th69 schrieb:
die Deklaration muß "int main()" lauten, s.a. http://www.c-plusplus.net/forum/viewtopic-var-t-is-39346.html
...jedoch wäre dies dann nicht mehr portabel im Sinne von "Standard C++".Da bringst Du was durcheinander... Der Link bezieht sicht auf C99, was nun mal mit C++ nix zu tun hat. Und ich hatte mich auch C++ bezogen...
Aber das was ja hier gar nicht das Thema... sorry für die Verwirrung...
-
RageR schrieb:
das 2. sollte schon ein "else if" sein
Ist genau genommen nicht notwendig, da die andere Bedingung nicht mehr efüllt sein kann, wenn die erste es ist - und andersrum.
Tatsächlich wäre es also sogar besser ein if (...) {} else {} heranzuziehen.
-
Hallo Jochen,
ok, falschen Link gepostet -)
Hier eine Antwort direkt von Stroustrup: http://www.research.att.com/~bs/bs_faq2.html#void-main
Und hier noch ein paar weitere Links, in denen für C++ nur 'int' als erlaubt angesehen wird:
http://en.wikipedia.org/wiki/Main_function_(programming)#C_and_C.2B.2B
http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/legality-of-void-main.html
http://www.parashift.com/c++-faq-lite/newbie.html#faq-29.3
http://www.comeaucomputing.com/techtalk/#voidmain
-
--- schrieb:
RageR schrieb:
das 2. sollte schon ein "else if" sein
Ist genau genommen nicht notwendig, da die andere Bedingung nicht mehr efüllt sein kann, wenn die erste es ist - und andersrum.
Tatsächlich wäre es also sogar besser ein if (...) {} else {} heranzuziehen.
stimmt
-
oder man nimmt doch das "else if(Alter>0)" sonst hast am end einen der ist -100 oder so;)
-
RageR schrieb:
oder man nimmt doch das "else if(Alter>0)" sonst hast am end einen der ist -100 oder so;)
oder man nimmt gleich nen datentyp der keine negativen zahlen hergibt am besten "unsigned char";)
-
RageR schrieb:
RageR schrieb:
oder man nimmt doch das "else if(Alter>0)" sonst hast am end einen der ist -100 oder so;)
oder man nimmt gleich nen datentyp der keine negativen zahlen hergibt am besten "unsigned char";)
Es ging ja eh nur darum abzufragen, ob das eingegebene Alter größer oder gleich 18 ist.
Wenns größer oder gleich 18 => Volljährig, die Anrede ist: Sie.
Ansonsten => Nicht volljährig, die Anrede ist: Du.Und
unsigned char
kannst du nicht nehmen, dastd::cin
dann ein Zeichen einliest und keine Zahl.
-
--- schrieb:
Und
unsigned char
kannst du nicht nehmen, dastd::cin
dann ein Zeichen einliest und keine Zahl.c++ is eben madig :p
-
Hmm da hab ich n Problem will mir ja nicht von anfang an einen schlechten Stil angewöhnen.
Kennt einer ein Tutorial das auch so (meiner Meinung nach) gut Strukturiert und simpel erklärt ist wie :
http://multidev.de/tutorial-programmieren/c++-book.php#11nur sollte es ein wenig aktueller und einen besseren Programmierstil aufweisen.
Hab mich schon dumm gegooglet aber nichts besonderes gefunden.Was sagt ihr zu dem buch Visual c++ 6 ?
LG
Joe199φ
-
Joe199 schrieb:
Hmm da hab ich n Problem will mir ja nicht von anfang an einen schlechten Stil angewöhnen.
Kennt einer ein Tutorial das auch so (meiner Meinung nach) gut Strukturiert und simpel erklärt ist wie :
http://multidev.de/tutorial-programmieren/c++-book.php#11nur sollte es ein wenig aktueller und einen besseren Programmierstil aufweisen.
Hab mich schon dumm gegooglet aber nichts besonderes gefunden.Was sagt ihr zu dem buch Visual c++ 6 ?
LG
Joe199φDas Buch Visual C++ 6 steht bei mir im Regal und verstaubt. Es ist uralt und zeigt sich mit einem Cover, wo void main() drauf steht. Horror, vergiss das Buch!!!
Etwas weiter links in meinem Regal steht C++ Lernen und professionell anwenden. Allerdings bin ich mir nicht sicher, ob man das als Anfänger bereits so gut nachvollziehen kann. Such mal im Forum nach Buchempfehlungen. Die Frage gabs schon häufiger.
-
Das Tutorial ist übrigens auch durchgefallen, weil es einen uralten Compiler verwendet und nicht mehr aktuellen Code beibringt:
#include <iostream.h> // Uralt void main() // Falsch { cout << "Hallo Welt\n"; }
Richtig wäre:
#include <iostream> int main() { std::cout << "Hallo, Welt!\n"; return 0; // Bei standardkonformen Compilern optional }
-
Oh Sorry da hab ich mich schlecht ausgedrückt, ich wollte ein tut das auch so aufgebaut ist nur richtig geschrieben.
Und das Buch C++ Primär (durch Boardsuche gefunden)?
Amazon:
http://www.amazon.de/C-Primer-Stanley-B-Lippman/dp/3827326125/ref=cm_cr_pr_product_topKundenkomentare von Amazon:
http://multidev.de/tutorial-programmieren/c++-book.php#11PS: Danke für die vielen antworten.
Echt Top von euch
-
Hier im Forum gibt es eine Menge an Tutorials (Link rechts oben in der Navigationsleiste dieses Forums): http://www.c-plusplus.net/cms/modules.php?op=modload&name=Downloads&file=index
Speziell zu deutschen Tutorials für C++: http://www.c-plusplus.net/cms/modules.php?op=modload&name=Downloads&file=index&req=viewsdownload&sid=2
-
Th69 schrieb:
Hier im Forum gibt es eine Menge an Tutorials (Link rechts oben in der Navigationsleiste dieses Forums): http://www.c-plusplus.net/cms/modules.php?op=modload&name=Downloads&file=index
Speziell zu deutschen Tutorials für C++: http://www.c-plusplus.net/cms/modules.php?op=modload&name=Downloads&file=index&req=viewsdownload&sid=2
Da sind natürlich auch veraltete Tutorials bei.
-
Danke aber da hab ich auch schon rumgeschnüffelt aber die sind alle von 2004.
Da hat sich in der Zeit sicher einiges geändert.