Z *=x

Ich kann mit Zuordnungen dieser Art in C++ irgendwie nichts anfangen… was heißt das denn nun konkret? (Was wird mit was multipliziert?)

z = z * x
Hi,

das bedeuetet:
z = z * x

Gruss,

Herb

Tja, so steht das auch in meinem C+±Buch, aber mathematisch ist doch bei
z = z * x
x=1
und das muss doch wohl nicht zwingend so sein, denn dann könnte ich statt x ja gleich 1 schreiben?!

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Discordia,

das Zeichen ‚=‘ hat in c/c++ nicht die Bedeutung eines Vergleichsoperators, sondern die einer Zuweisung. In vielen Programmiersprachen wie z.B. Pascal würde hierfür nicht ‚=‘ verwendet, sondern ‚:=‘. Die Anweisung ‚x=A‘ bedeutet also, dass der Ausdruck A ausgewertet und das Ergebnis der Variablen x zugewiesen werden soll. Der Vergleichsoperator wird in C/C++ durch ‚==‘ dargestellt.

Beispiel:
int x; // Variable vom Typ int
x=5; // Der Variablen x wird der Wert 5 zugewiesen.
x=2*x; // Es wird 2*x ausgewertet (Ergebnis 10), das Ergebnis wird in x abgespeichert
x*=3; // Steht für x=x*3, also x*3 berechnen (30) und in x abspeichern
if (x==5) {/* hierher, wenn x den Wert 5 enthält */}
else {/* und hierher, wenn x nicht den Wert 5 enthält */}

Manche Laufzeitfehler entstehen durch das Verwechseln von ‚=‘ und ‚==‘. Zum Beispiel könnte obige if-Anweisung irrtümlich
if (x=5) …
heißen. Gemeint ist zwar der Vergleich zwischen dem Inhalt von x und der 5, aber tatsächlich wird der Variablen x der Wert 5 zugewiesen und der Integerwert 5 wird als ‚true‘ Interpretiert, so dass nicht nur der Inhalt von x versehentlich verändert wird, sondern auch noch die falsche Alternative genommen wird. Bessere Compiler geben in solchen Fällen eine Warnung aus.

Viele Grüße
Jens

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

1 Like

Kompliment

Hallo Discordia,

das Zeichen ‚=‘ hat in c/c++ nicht die Bedeutung eines
Vergleichsoperators, sondern die einer Zuweisung. In vielen
Programmiersprachen wie z.B. Pascal würde hierfür nicht ‚=‘
verwendet, sondern ‚:=‘. Die Anweisung ‚x=A‘ bedeutet also,
dass der Ausdruck A ausgewertet und das Ergebnis der Variablen
x zugewiesen werden soll. Der Vergleichsoperator wird in C/C++
durch ‚==‘ dargestellt.

Wow, Kompliment an deine Kombinationsgabe!
Grübelte grade ne halbe Stunde, wie sie auf die Idee kommt, dass x gleich eins sein sollte, dabei ist es doch so einfach *g*

Wir Programmierer sind doch ein seltsames Volk, halten uns nicht mal mehr an die Regeln der Mathematik…

lg,
Bettina (die wieder mehr rechnen und weniger programmieren sollte)