Verständnisfrage zu Anweisungen und deren Wirkung

SmittyJoe

Mitglied
Bei der Aufgabe ist mir nicht klar wie ich arbeiten muss! Klar ist das ich für a,b und c int-Werte nehme und dannrechnen muss! Links erfolgt eine Rechnung, doch was muss ich auf der rechten Seite bei bso. a=b beachten?

Haben die im folgenden nebeneinander gestellten Anweisungen stets die gleiche Wirkung (alle Variablen sind vom Typ int)?
Java:
a = (b - c)*2;      a = b;
                                  a = a - c;
                                  a = a*2;


Java:
a = (b - a)*2;          a = b;
                                      a = a - a;
                                      a = a*2;


Java:
a = (b - c)*2;          a = b*2;
                                      a = a - c*2;


Java:
a = (b - c)*2;          b = b*2;
                                      a = b - c*2;

Verifizieren Sie Ihre Vermutungen mit Wertverlaufstabellen und/oder mit Hilfe von Testprogrammen!
 
Bei Java wird immer erst der Teil rechts des Gleichheitszeichens bearbeitet, sprich wenn du z.B schreibst
Java:
a = a++; // ist das gleiche wie ( a = a + 1) inkrementiert um 1

wird in der int variable a der wert der rechts neben dem "=" steht gespeichert , wenn dort nun steht :

Java:
a = b; // speichert eine kopie der variable b in variable a

da Java Pass by Value oder auch Pass by copy ist bedeutet das das nicht der eigentliche Wert der variable b in variable a gespeichert wird sondern eine Kopie der Wertes den b Referenziert .

Nehmen wir mal an du hast folgenden Code

Java:
int a = 10;
int b = 20;

a = (a + b) * 2 ; // erst wird die Rechnung rechts des Gleichheitszeichens ausgeführt

System.out.println("Das Ergebnis beträgt " + a);

// führt dies zu dieser Ausgabe:

Das Ergebnis beträgt 60
 
Zuletzt bearbeitet:
Wenn du jetzt die Aufgabe hast die dort aufgeführten Anweisungen zu vergleichen schreib dir am besten ein kleines Testprogramm und führe die Anweisungen darin aus und lass dir die Ergebnisse dieser Ausgeben, so kannst du nachvollziehen zu welchem Ergebnis die verschiedenen Anweisungen kommen bzw. welchen unterschied diese haben 🙂
 
Für den ersten Abschnitt wäre es ja folgendermaßen:

int a = 10;
int b = 20;
int c = 30;

Java:
a = (b - c)*2;

a =(20-30)*2;

a = -20

Java:
a = b;

a = 20;

Java:
a = a -c;

a = -20

Java:
a = a*2;

a = 20;

Wir haben nun zweimal die gleichen Ergebnisse, wäre es hier nun die gleiche Wirkung?
 
Zuletzt bearbeitet:
Naja, hier wäre es jetzt gut mal die vollständige Frage bzw den kompletten code zu der Frage zu sehen, in Bezug auf oben stehenden code, wenn man die Wirkung beider Anweisungen vergleicht
Also
Java:
a= ( b-c )*2; // wertzuweisung durch rechnung

a= b; // speichert lediglich eine Kopie des wertes aus variable b in variable a

Da ich nicht weiß wie der vollständige code dazu ist und die werte der Integer variablen nicht kenne kann ich so dazu nicht viel mehr sagen 🙂
 
In den Zitaten ist die genaue Aufgabenstellung drinne!

Hab hier eine andere Aufgabe welche 1:1 gleich ist:

Hat die Anweisung

a = (b - c)*2;

stets die gleiche Wirkung auf alle beteiligten Variablen, wie die Ausf¨uhrung der folgenden Anweisungen:

b = b*2;
a = b;
c = c*2;
a = a - c;

unabhängig davon, welchen Wert die ganzzahligen Variablen a, b und c haben? Geben Sie zur Rechtfertigung Ihrer Antwort eine überzeugende kurze Argumentation oder ein Gegenbeispiel an.

Vielleicht ist es jetzt verständlicher 🙂
 
Naja unabhängig von den Werten der einzelnen Integer variablen, wird bei jeder Anweisung der jeweiligen Referenz (a,b,c) ein Wert zugewiesen 🙂

Demnach ist die Wirkung jeder dieser aufgeführten Anweisungen eine Wertzuweisung, nur mit unterschiedlichen Referenzen ( Werten ).
Java:
a=(b-c)*2; // wertzuweisung 
a=b; // wertzuweisung
Natürlich ist bei solchen unterschieden
Java:
 a=b-c*2;

a=(b-c)*2;

Ein anderes Ergebnis zu erwarten, da es aber nicht um Werte geht sondern um die Wirkung sollte das eigentlich passen, insofern ich jetzt die Fragestellung nicht vollkommen falsch deute 🙂
 
Zuletzt bearbeitet:
von anderer Seite gesehen verändert diese Anweisung den Wert, den a referenziert
Java:
a = ( b - c ) * 2;
Diese hier wiederum den Wert den b referenziert
Java:
b = b * 2;
Usw..
Bezieht man sich jetzt von der als erstes aufgeführten Anweisung auf alle folgenden , ist die Wirkung (bezogen auf die Referenzen) nicht immer die gleichen, da ja nicht jedesmal a, sondern auch die von b und c referenzieren Werte sich ändern, unabhängig davon welchen Wert die einzelnen variablen haben.
 
Zuletzt bearbeitet:

Zurück
Oben