Zuweisungsoperatoren

Neue Frage »

Auf diesen Beitrag antworten »
Matthias Zuweisungsoperatoren

Meine Frage:
Hallo zusammen,

ich hätte eine Frage zu Zuweisungsoperatoren.

Ich weiß, dass es eine verkürzte Schreibweise gibt und der Vorteil darin liegt, dass diese einen schnelleren Code erzeugen und der Erhöhung einer Variable um einen konstanten Betrag dienen.

Allerdings kann ich, sobald Aufgaben dazu vorliegen, nichts damit anfangen.

int x,y,z;

x = 3;
y = 2;
z;


System.out.println (z += x += y)
System.out.println (z += x += y = 1)



Meine Ideen:
Wie gehe ich denn am Besten an sowas ran?


Vielen Dank :-)
 
Auf diesen Beitrag antworten »
eulerscheZahl RE: Zuweisungsoperatoren

Starten könntest du mit einer vollständigen Angabe (der Compiler beschwert sich, dass z nicht initialisiert ist, ich setze es einfacfh mal zu 0)

Verbindungen von mehreren Zuweisungen werden von rechts nach links abgearbeitet.
Also:
x += y
--> x = x + y = 3 + 2 = 5
z += x
--> z = z + x = 0 + 5 = 5
das z wird dann auch ausgegeben.
für die nächste Zeile musst du dann mit x = z = 5 weiterrechnen
Auf diesen Beitrag antworten »
Matthias

Super, danke für deine Hilfe. Daumen hoch
Auf diesen Beitrag antworten »
123michi19

Hi :-)

Ich habe das Thema hier gerade gefunden und hätte auch eine Frage dazu (Habe das Gleiche Programm zu schreiben)

Der Code:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
/*Test.java*/
public class Test
{
	public static void main (String[]args)
	{
		int x=3, y=2, z;
		System.out.println (z=x+1);
		System.out.println (z+=x+1);
		System.out.println (z+=x+y); //Bis hierhin ist alles verständlich
                /*Ab den nachfolgenden Zeilen gibt es Probleme und ich verstehe leider
 auch den vorhergehenden Beitrag nicht so ganz. Die Abarbeitung 
erfolgt bei Zuweisungsoperatoren von rechts nach links. 
Das würde doch für die 4. Zeile heißen:
System.out.println (z+=x+=y);
y = y+x = 2+3 = 5
x = x+z = 13 +3 = 16
Das Ergebnis lautet 18, aber ich komme nicht darauf :-(
In der nächsten Zeile das gleiche Problem:		
System.out.println (z+=x+=y=1);
1 = 
y = y+x
x = x+z
*/	
	}
}


Vielen Dank für Eure Unterstützung :-)
 
Auf diesen Beitrag antworten »
eulerscheZahl

Zitat:
Die Abarbeitung
erfolgt bei Zuweisungsoperatoren von rechts nach links.
Das würde doch für die 4. Zeile heißen:
System.out.println (z+=x+=y);
y = y+x = 2+3 = 5
x = x+z = 13 +3 = 16

Nein geschockt
es steht weiterhinlinks die Variable, in die etwas geschrieben wird und rechts steht, was dorthin geschrieben wird. Du hast aber 2 Zuweisungen in einer Zeile, die werden von rechts nach links ausgeführt, also:
x+=y; --> x = x+y = 3+2 = 5
z+=x; --> z = z+x = 13+5 = 18
Auf diesen Beitrag antworten »
123michi19

Vielen Dank :-) Jetzt klappt es :-)
 
Neue Frage »
Antworten »


Verwandte Themen