Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Sonstige Fragen (http://www.informatikerboard.de/board/board.php?boardid=25)
--- Zuweisungsoperatoren (http://www.informatikerboard.de/board/thread.php?threadid=1945)


Geschrieben von Matthias am 26.10.2014 um 14:44:

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



Geschrieben von eulerscheZahl am 26.10.2014 um 15:42:

  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



Geschrieben von Matthias am 26.10.2014 um 16:43:

 

Super, danke für deine Hilfe. Daumen hoch



Geschrieben von 123michi19 am 13.11.2014 um 01:02:

 

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



Geschrieben von eulerscheZahl am 13.11.2014 um 06:07:

 

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



Geschrieben von 123michi19 am 15.11.2014 um 09:30:

 

Vielen Dank :-) Jetzt klappt es :-)


Forensoftware: Burning Board, entwickelt von WoltLab GmbH