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]
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)