Anfänger
-
ich hab seit einer Woche mit c angefangen
Alles lief gut bis heute
ich wollte diese Übung lösen aber leider hab keine Lösung gefunden
Die aufgabe lautet :
…
b = 4;
a = b++ + b++;
printf(“a = b++ + b++ = %d, b = %d \n“,a,b);
…
Schreiben Sie die zweite Zeile jeweils so um, dass i) a = 8, b = 5 ii) a = 9, b = 5 iii) a = 10, b =
5 herauskommt. Die „neue zweite Zeile“ darf auch nur eine Zeile sein, aber sie darf auch
*,/,+,- enthalten, sowie weitere Ziffern. Weiter muss mindestens einmal der Inkrement- oder
der Dekrement-Operator benutzt werden. Welchen Wert ergibt die Zuweisung a = b +
(++b); ? Schreiben Sie ein Programm , das diese vier
Fälle überprüft.
bitte ich brauche dringend Hilfe
danke im Voraus.
-
es gibt "++b" und "b++". finde den unterschied.
-
hab schon
a += ++b ;
heißt
b++; dann
a=a+b;
und
a += b++;
bedeutet :
a=a+b;
b++;
-
es bleibt a = ...
nur musst du die Bs aendern, also mal "b", dann wieder "b++" und dann auch mal "++b".bitte gehe auf meinen ersten post ein.
-
a = b++ + b++
a = ++b + b++
a = b + ++b
-
kommt denn raus, was rauskommen soll?
b soll von 4 auf 5 gehen, also darf nur einmal ++ vorkommen.
dein drittes ist also schon mal richtig. kannst du auch erklaeren, welchen wert dann a und b haben?
-
hauptsache ihr einigt euch auf einen compiler. ein anderer könnte was anderes ausspucken
-
a = b++ + b++ a=8 b=6
a = ++b + b++ a=9 b=6
a = b + ++b a=9 b=5
-
edit:
probier mal, nicht das zweite sondern das b in der zuweisung zu erhoehen.@net: das hat der lehrer zu entscheiden, weil der die noten vergibt
-
Ich vermute, das ist alles Unsinn, denn es gibt keine feste Reihenfolge, wann ausdruck1 und ausdruck2 in ausdruck1 + ausdruck2 abgearbeitet werden, deswegen ist meiner Meinung nach sowas wie a = ++b + b++ nicht definiert. Angenommen links wird zuerst abgearbeitet und b war vorher 4 ==> nach der Ausführung von a = ++b + b++ gilt: a = 10 und b = 6. Angenommen rechts wird zuerst abgearbeitet und b war vorher 4 ==> nach Ausführung von a = ++b + b++ gilt: a = 9 und b = 6. D.h. bei einem Compiler kommt a = 10 bei anderen könnte a = 9 kommen. So etwas wie ++irgendwas (+-*/wasweißich) blablabla++ ist nur Blödsinn.
edit: jetzt sehe ich, dass net auch drauf hingewiesen hat.
-
steht etwa im standard, dass die assoziativitaet der operatoren von der implementation abhaengig ist?
-
Die Assoziativität der Operatoren ist festgelegt, allerdings die Reihenfolge der Berechnungen nicht. d.h. der Ausdruck "a = f() + g();" kann je nach Compiler unterschiedlich ausgewertet werden: "tmp1=f();tmp2=g();a=tmp1+tmp2;" oder "tmp1=g();tmp2=f();a=tmp2+tmp1;".
Und an welcher Stelle die Nebeneffekte eines Ausdrucks wirksam werden, ist nach Standard auch nicht festgelegt (es gibt einige definierte "Synchronisationspunkte" - aber das + gehört nicht dazu).
-
solche fragen zu diskutieren ist hirnrissig. jeder hat seine meinung, die fakten stehen fest.