Modulo
-
Ich lerne gerade C++ mit den Buch C++ für Spieleprogrammierer.
Ich bin jetzt im Kapitel 3 angekommen und verstehe jetzt eine Zeile
nicht.Und zwar verstehe ich die Zeile:
if (CountdownStart%2 == false)nicht so ganz. Könnt ihr mit vielleicht erklären was in dieser Zeile genau passiert?
Mfg
Mihyaeru
-
Der Rest der Ganzzahldivision
CountdownStart / 2
wird mitfalse
(= 0
) verglichen.
-
Danke für die schnelle Antwort.
Also könnte man das theoretisch so sehen das false für 0 steht und true für 1?
-
Mihyaeru schrieb:
Also könnte man das theoretisch so sehen das false für 0 steht und true für 1?
0 wird zu false, alles andere zu true.
-
Mihyaeru schrieb:
Also könnte man das theoretisch so sehen das false für 0 steht und true für 1?
Jein. Da steht nicht irgendwas für irgendwas anderes, das sind die Standard-Conversions (§4) die für Booleans und Integrals nicht in beide Richtungen gleich funktionieren.
ISO/IEC 14882:2011 (N3242) schrieb:
4.7 Integral conversions
[conv.integral]
4.7.4 If the destination type is
bool
, see 4.12. If the source type isbool
, the valuefalse
is converted to zero and the value true is converted to one.4.12 Boolean conversions
[conv.bool]
4.12.1 A
prvalue
of arithmetic, unscoped enumeration, pointer, or pointer to member type can be converted to aprvalue
of typebool
. A zero value, null pointer value, or null member pointer value is converted tofalse
; any other value is converted to true. For direct-initialization (8.5), aprvalue
of typestd::nullptr_t
can be converted to aprvalue
of typebool
; the resulting value isfalse
.
-
Vielen dank für eure hilfe.
Es hat zwar ein wenig gedauert, aber ich glaube jetzt verstehe ich es.
-
Das hier gezeigte ist nicht gerade der beste Stil, weil ein arithmetischer Wert mit einem Wahrheitswert verglichen wird. Das funktioniert zwar wegen der möglichen Konvertierungen, aber es ist eben philosophisch unschön. Man hätte hier 0 statt false schreiben sollen.
-
Habe mir im Buch, mit dem ich lerne, gerade weitere Beispielcodes angesehen.
Da wird auch statt false eine 0 verwendet.Vielleicht war das mit den false an der ersten stelle nur ein versehen vom Autor.
Meiner meinung nach ist das mit der 0 statt dem false auch gerade für Anfänger zumindest etwas verständlicher was da passiert
-
Da drängt sich die Frage auf: Was erwartest du von einem Buch mit einem solchen Titel? Didaktisch ausgefeilte Aufarbeitung? Kompetenz in allen Bereichen der Sprache? Oder vielleicht nicht doch eher Geldmacherei, die von einer "Lernen ist doof, aber Spiele sind geil"-Mentalität profitieren möchte?
Die Kritiken bei Amazon sind wie üblich bei Anfangerbüchern, wo der Leser nur selten die Qualität beurteilen kann:
50 Mal 5 Sterne, weil der Autor so schön mit Umgangssprache erklärt.
Wenige Male 1 Stern, weil der Autor keine Ahnung vom Thema hat.
-
Mir ist bewusst, wenn ich das Buch durchgearbeitet habe, noch lange keine Spiele
programmieren kann. Mir geht es tatsächlich nur um die grundlagen. Und diese sind in diesen Buch bisher ganz gut erklärt worden.Und ich habe auch schon versucht mit anderen büchern c++ zu lernen.
Aber bisher fällt es mir mit diesen Buch am leichtesten c++ zu lernen, obwohl das buch in der tat einen sehr fragwürdigen titel hat.
-
Mihyaeru schrieb:
Mir geht es tatsächlich nur um die grundlagen. Und diese sind in diesen Buch bisher ganz gut erklärt worden.
C++ für Spieleprogrammierer, 4. Auflage (2013) p. 33 schrieb:
int main () { // Variablen // int Lebensenergie; // Variable deklarieren Lebensenergie = 100; // Variable definieren cout << "Lebensenergie des Spielers: " << Lebensenergie << endl; return 0; }
Wow, 2 Kommentare, 2 Fehler.
-
Swordfish schrieb:
int main () { // Variablen // int Lebensenergie; // Variable deklarieren Lebensenergie = 100; // Variable definieren cout << "Lebensenergie des Spielers: " << Lebensenergie << endl; return 0; }
Wow, 2 Kommentare, 2 Fehler.
Hah! Jetzt weiß ich endlich, wo dieser Mythos herkommt, dass ersteres eine Deklaration und letzteres eine Definition wäre. Das habe ich hier im Forum schon ein paar Mal gesehen und mich gefragt, welche Quelle das so weit verbreitet hat.
PS: Das letzte Mal, dass ich das gesehen habe, kam das von dir, Swordfish! Hast du auch nach diesem Buch gelernt?
-
Okay, da ich natürlich erst angefangen habe mit den lernen, kann ich natürlich nicht sagen ob irgendwo fehler drin sind oder nicht.
In den beispiel würde es mich interessieren wo da die fehler sind. Denn beim ausführen hat das funktioniert, ohne das mir fehler oder warnungen angezeigt wurden von visual studio 2012.
Und welches buch würdet ihr denn anfängern empfehlen, die noch nicht mal die grundlagen können, um c++ zu lernen?
-
SeppJ schrieb:
PS: Das letzte Mal, dass ich das gesehen habe, kam das von dir, Swordfish! Hast du auch nach diesem Buch gelernt?
Witzkeks. Ich war müde.
-
Mihyaeru schrieb:
Mir ist bewusst, wenn ich das Buch durchgearbeitet habe, noch lange keine Spiele
programmieren kann. Mir geht es tatsächlich nur um die grundlagen. Und diese sind in diesen Buch bisher ganz gut erklärt worden.Die Sache ist halt, dass du als Anfänger nur die Form, nicht den Inhalt beurteilen kannst. Gut geschriebener Stuss ist immer noch Stuss, den man dann besonders gut verinnerlicht hat.
Ganze Generationen von Leuten denken, die Nudel würde beim Kochen weich wegen der Hitze, das Flugzeug würde wegen Herrn Bernoullis Prinzip fliegen oder Wasser wäre blau, weil sich der Himmel darin spiegelt* (ich habe sogar schon die umgekehrte Erklärung gehört!). Alles, weil der nette "Experte" im Fernsehen es so schön erklärt hat.
*: Beim Wasser kommt die Allgemeinheit so langsam auf den Trichter, dass die Erklärung so nicht haltbar ist. Dank dem Internet verbreitet sich das sogar recht flott. Natürlich geht das auch umgekehrt bei so manchen falschen Erklärungen. Der Flugzeugmythos hält sich beispielsweise geradezu penetrant außerhalb von akademischen Fachkreisen.
-
Mihyaeru schrieb:
In den beispiel würde es mich interessieren wo da die fehler sind. Denn beim ausführen hat das funktioniert, ohne das mir fehler oder warnungen angezeigt wurden von visual studio 2012.
Das Programm ist technisch richtig, die Erklärungen in dem Beispiel sind bloß vollkommen falsch. Zeile 5 ist eine Definition (und genau genommen auch eine Deklaration). Zeile 7 ist keines von beidem. Ein Autor, der bei der Erklärung dieser (grundlegenden) Begriffe solch dicke Fehler macht, ist inkompetent (oder sehr müde
). Das ist kein Flüchtigkeitsfehler, der Mensch hat die Bedeutung der Begriffe schlicht und einfach nicht verstanden.
Und welches buch würdet ihr denn anfängern empfehlen, die noch nicht mal die grundlagen können, um c++ zu lernen?
Guck in meine Signatur oder die als wichtig markierten Threads!
-
Mihyaeru schrieb:
Und welches buch würdet ihr denn anfängern empfehlen, die noch nicht mal die grundlagen können, um c++ zu lernen?
Die üblichen Empfelungen sind
C++-Primer, 5th Edition
Die C++-Programmiersprache, 4. Auflage (gibt's ne aktuellere deutsche Übersetzung?)
Der C++-Programmierer
C++: Das komplette Starterkit für den einfachen Einstieg in die Programmierung (Louis hat doch auch ned viel falsch gmacht, oder?)
-
Könnt ihr mir denn ein Buch empfehlen, um c++ zu lernen?
Weil es ist natürlich in mein eigenen interesse c++ von anfang an richtig zu lernen und nicht erst zu lernen und hinterher festzustellen, dass das buch fehler enthielt. Wie es halt jetzt passiert ist, nur das ich mit den lernen noch nicht allzu weit war.
-
Okay, da mein englisch nicht so das beste ist würde ich dann eher eins von den beiden nehmen:
Der C++-Programmierer
C++: Das komplette Starterkit für den einfachen Einstieg in die ProgrammierungKennst du eins dieser beiden Bücher? Oder sind sich die beiden Bücher recht ähnlich, so das es im prinzip egal ist welches der beiden nimmt?
-
Nein, kann ich leider nicht. Ein Buch vom Breymann hab' ich mal gelesen, das war aber 200x.
//@SeppJ: Und eins mit zwei Sprachen im Namen. Ich hab's irgendwann einem unliebsamen Menschen "nachgeworfen"