Rechenvorschrift bei Zuweisung

Gast #5852577
Guten Morgen!

Eine Frage zu der einfachen Zeile Code:
1
x += y + z;
Ist offensichtlich nicht das selbe, wie
1
x += (y + z);

Bei mir ist x=2, y = 0 und z = 24 und beim ersten erhalte ich 0 für x 
und nicht wie erwartet 26.

Die Frage ist nun:
Was macht der Compiler/Controller mit dem "+z", wenn er nur "x += y" 
rechnet?

Danke für die Hilfe.

Grüße
Chris
Gast
hm,

was für eine Programmiersprache ist das denn?

in C hat der + operator eine höhere Prio als der += Operator. Eigentlich 
sollte er erst y+z ausrechnen und auf x draufaddieren.
Christian schrieb:
> Eine Frage zu der einfachen Zeile Code:
>
1
x += y + z;
> Ist offensichtlich nicht das selbe, wie
>
1
x += (y + z);

Es ist in C/C++ dasselbe, ob offensichtlich oder nicht. Wenn das reale 
Ergebnis es nicht ist, dann nicht aufgrund der Sprache.

Der einzige Operator, bei es anders aussieht, ist
  x += y, z
denn das ist
  (x += y), z
und damit nicht
  x += (y, z)
Gast
Bernd schrieb:
> Bin ich froh, dass ich mein Geld mit C verdiene.
Du meinst, in C sind Schreibfehler nicht so schlimm?
>
> Nebenbei: Könnte es sein, dass du nicht bis zwei zählen kannst?
Könnte ich schon, wenn zwei Zeilen da wären :-)
Gast
Christian schrieb:
> Bei mir ist x=2, y = 0 und z = 24 und beim ersten erhalte ich 0 für x
> und nicht wie erwartet 26.
Wenn das so ist, was bedeutet dann

> Die Frage ist nun:
> Was macht der Compiler/Controller mit dem "+z", wenn er nur "x += y"
> rechnet?
x+=y würde doch 2 und nicht 0 ergeben.

Also Code posten.
Gast
Also nochmal an den TO:

In C kommt bei beiden deiner Ausdrücke das Selbe raus. Der Fehler muss 
bei dir liegen oder du verschweigst uns (unbeabsichtigt) wichtige 
Details.

Bitte den ganzen Quellcode in der aktuellen Version zeigen + Angabe des 
Ziels (Mikrocontroller, Linux, etc..)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 7 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.