[Variablen] - kurtze frage
-
Swordfish schrieb:
Nacho schrieb:
Habe nun die Variablen gelernt
Typen heißen die Dinger: Fundamental types
Nacho schrieb:
wenn ich jetzt z.b ein "pointer" habe [...]
Wenn du einen Pointer hast, dann muss der Zuersteinmal auf irgendetwas "zeigen", das dir "gehört":
#include <iostream> int main() { int number = 47; std::cout << "number = " << number << "\n"; int *pointer = nullptr; // Wichtig: immer initialisieren. Im "schlimmsten" Fall mit 0. Jetzt hamma an "Zeiger auf int" pointer = &number; // Dem pointer per Referenzoperator & (aka "Adressoperator") die Adresse der Integervariable number zuweisen. // Wollen wir nun über den pointer auf die Speicherstelle zugreifen, deren Adresse er bekommen hat, brauchen wir den Indirektionsoperator * *pointer = 815; std::cout << "number = " << number << "\n"; }// edit:

Nacho schrieb:
[...]Eher so:
#include <iostream> using namespace std; int main() { cout << "Erste Zeile." << "Immer noch erste Zeile." << endl << "Zweite Zeile.\n"; }dankeschön.
-
Cyres schrieb:
Swordfish schrieb:
...
Zu dem Code sollte gesagt sein, dass es C++11 ist, weiß ja nicht, was für nen Compiler du benutzt (@Nacho). Falls es nicht klappt den Pointer mit NULL oder 0 (wie im Kommentar beschrieben) initialisieren.
es kommtn kleiner error:
"nullptr undeclared" (first use this function)
-
Dann unterstützt dein Compiler (by default) kein C++11 (tut das eig überhaupt schon einer by default?). Also mit 0 oder besser mit NULL initialisieren. NULL ist glaube ich in <cstddef> deklariert.
Edit: Der Grund liegt übrigens in der Auflösung von überladenen Funktionen
-
Dann nimm stattdessen
NULL. Welche IDE/welcher Compiler?// edit: toooooo late.
-
NULL hat keinen Mehrwert, nimm 0.
-
Kellerautomat schrieb:
NULL hat keinen Mehrwert, nimm 0.
Wenigstens der gcc kann mit NULL mehr anfangen als mit 0. Außerdem wird NULL nur in Verbindung mit Pointern benutzt und man sieht beim lesen schneller, was es heißen soll. NULL matcht eher Pointer als ints.
-
Cyres schrieb:
Wenigstens der gcc kann mit NULL mehr anfangen als mit 0.
NULL ist 0.
Cyres schrieb:
Außerdem wird NULL nur in Verbindung mit Pointern benutzt
Noe. Wird oft missbraucht.
Cyres schrieb:
und man sieht beim lesen schneller, was es heißen soll.
Ich lehne mich mal so weit aus dem Fenster, um zu behaupten, dass das nicht noetig ist.
-
Kellerautomat schrieb:
Cyres schrieb:
Außerdem wird NULL nur in Verbindung mit Pointern benutzt
Noe. Wird oft missbraucht.
Hast du ein Beispiel? Hab ich noch nie gesehen.
-
Kellerautomat schrieb:
Cyres schrieb:
Wenigstens der gcc kann mit NULL mehr anfangen als mit 0.
NULL ist 0.
laut Makrodefinition ja, aber der gcc erkennt NULL und deutet es als Pointer. Andere Compiler hingegen nicht.
Kellerautomat schrieb:
Cyres schrieb:
Außerdem wird NULL nur in Verbindung mit Pointern benutzt
Noe. Wird oft missbraucht.
Habe ich noch nie gesehen, aber es gibt auch leute die Konstrukte mit 20 Pointern schöner als Vektoren finden oder generell C in C++ programmieren, aber die lasse ich in dem Punkt außen vor

Kellerautomat schrieb:
Cyres schrieb:
und man sieht beim lesen schneller, was es heißen soll.
Ich lehne mich mal so weit aus dem Fenster, um zu behaupten, dass das nicht noetig ist.
Ich benutze eh immer nullptr, aber danke für die Blumen

-
Also ich würde 0 nehmen.
Ich zitiere Bjarne Stroustrup:In C war es populär, ein Makro NULL zu definieren, um den Nullzeiger zu repräsentieren. Durch die enge Typprüfung von C++ führt die Benutzung der einfachen 0 anstelle des NULL-Makros zu weniger Problemen. Wenn sie meinen, NULL definieren zu müssen, dann benutzen sie:const int NULL = 0;gruß
syntax
-
dankeschön das ihr hier das alles so kräftig durch diskutiert

ich nehme mal die "const int NULL = 0;"ich dencke wenn ich jetzt sozusagen eine "Kiste" mit meinen variablen erstellt habe kann ich sie damit füllen oder? :
{ int alter; alter = 42; ;cout << "Du bist" << alter << endl; int alter2 = 7 ;cout << "Du bist" << alter2 << endl; int alter3 ;cin >> alter3 ;cout << "Das Dritte Alter Beträgt" << alter3 ; int zahl_1,zahl_2,zahl_3; ;cin.sync() return 0;
-
oder einfach c++11 aktivieren und nullptr benutzen

// edit; autsch, Codestyle, hast du das auch von Youtube?
{ int alter = 42; // Wenn möglich immer zusammen cout << "Du bist " << alter << endl; // Leerzeichen nach String verschönert Ausgabe int alter2 = 7; cout << "Du bist " << alter2 << endl; // Same here int alter3; cin >> alter3; cout << "Das Dritte Alter Beträgt " << alter3 << endl; // endl hinzugefügt int zahl_1; int zahl_2; int zahl_3; // Lässt sich drüber streiten, bei mir immer: "Eine Definition/Deklaration pro Zeile", Grund sind ganz einfach Pointer // was sollen die 3 zahlen eigentlich bringen? cin.sync(); // benutz ne vernünftige IDE und du brauchst das nicht mehr return 0; // in C++ in der main implizit, unnötig }Und allgemein das Simikolon IMMER am Ende der Zeile, kein wenn und aber.
So, 5 mal editiert, jetzt reichts aber

// 6 mal...
-
so bin wider bei den rechnungen angelangt da ich sie eher besser meistern will
bei mir kommt bei einer zeile das es nicht "declariert" wurde aber wieso?#include <iostream> #include <windows.h> using namespace std; int main(void) { int ergebnisADD; ergebnisADD = 27 + 3; int ergebnisSub; ergebnisSub = 103 - 3; int ergebnisMul; ergebnisMUL = 7 * 7; int ergebnisDiv; ergebnisDiv = 20 / 2; int ergebnisMod; ergebnisMod = 10 % 3; cout << ergebnisADD << endl << ergebnisSub << endl << ergebnisMul << endl << ergebnisDiv << endl << ergebnisMod << endl ;cin.sync() ;return 0; }es ist die zeile mit "7 * 7"
-
Nacho schrieb:
int ergebnisMul; ergebnisMUL...so sieht man es besser, bevorzuge bitte oberer Schreibweise

kleiner Tipp: benutz die cpp-tags anstelle der code-tags.
-
Das ist, weil ErgebnisMUL != ErgebnisMul ist.
C++ unterscheidet zwischen Groß- und Kleinschreibung.Ansonsten würde ich dir raten, eine Variable wenn möglich zu initialisieren.
int zahl; //Definition einer Zahl mit beliebigem Wert zahl = 5; //Zuweisung an zahl int zahl = 5; //Definition einer Zahl initialisiert mit 5Semikolon am Zeilenende. (Wie schon ein paar Posts davor)
windows.h brauchste nicht.gruß
syntax
-
Cyres schrieb:
Nacho schrieb:
int ergebnisMul; ergebnisMUL...so sieht man es besser, bevorzuge bitte oberer Schreibweise

kleiner Tipp: benutz die cpp-tags anstelle der code-tags.
Danke , da sieht man wie leicht man fehler machen kann *sich schähm*
was sind den cpp-tags? oder code-tags? (sry warscheinlich eine blöde frage aber habe echt keine ahnung)
-
Wenn du einen Code erzeugs ([ code]...[/code]) benutze anstelle dessen [ cpp]...[/cpp] (jeweils ohne Leerzeichen).
-
cpp-Tags unterstützen das Syntax-Highlighting.
mit cpp-Tag:
int;ohne:
int;gruß
syntax
-
ahh tut mir leid wusste es nicht ;X
-
so nun , habe das mit int iwie nicht hingekriegt kommt immernoch weißes herraus naja trotzdem bin ich weiter gekommen und hab ein neuen code geschrieben trotzdem kommt der fehler das , dass "}" fehlt , wenn ich es dan dort zumache und dan wider nach "if" wider aufmache kommt ein error.
#include <iostream> #include <windows.h> using namespace std; int main(void) { int alter; cout <<"Du musst 18 jahre alt sein" << endl; <<"Gebe dein alter ein: "; cin >> alter; if ( alter>= 18 ) { //Bedingung cout <<"Du bist" << alter << "Jahre alt" << endl <<"Programm wird geladen .... "; } ;cin.sync() ;return 0; }ok fehler ist korrigiert , doch das andere problem ist es kommt ein error: expected primary-expression before
<<token