Operatoren Seiteneffekte bei Auswertung von Ausdrücken

Hallo zusammen,

Folgende Aufgabe
ist gegeben:

Werten Sie die folgenden Ausdr¨ucke aus. Die Variable i soll zu Beginn den Wert 0 haben. Welchen Wert besitzt i jeweils nach Auswertung des Ausdrucks aufgrund der Seiteneffekte?
i) true | i++==7
ii) true || i++==7
iii) true | i++==7 || i++==7
iv) true || i++==7 | i++==7
v) true | i++==7 | i++==7

Die Lösung dazu lautet:
i) true, Wert von i: 1
ii) true, Wert von i: 0
iii) true, Wert von i: 1
iv) true, Wert von i: 0
v) true, Wert von i: 2

Frage:
Ich verstehe nicht, wie man auf die Werte von i kommt? Bei i) müsste es doch zum Beispiel i=6 sein oder?

Vielen Dank für Eure Hilfe!
Viele Grüße
 

temi

Top Contributor
Das ODER gibt es als Kurzschlussoperator (||) oder Nicht-Kurzschlussoperator (|), d.h. als Kurzschlussoperator wird der nachfolgende Teil der Verknüpfung NICHT mehr berücksichtigt, wenn der erste Teil bereits erfüllt ist.

Beim i++==7 musst du berücksichtigen, dass es sich aus einer Kombination von einer Zuweisung und einem Vergleich handelt:
(i = i +1) == 7
Was im Übrigen false ergibt, weil 1 != 7
 
Zuletzt bearbeitet:

JStein52

Top Contributor
Das ODER gibt es als Kurzschlussoperator (||) oder Nicht-Kurzschlussoperator (|)
Keine Ahnung was du mit Kurzschluss und nicht Kurzschluss meinst, aber das || ist ein logisches ODER, d.h. es wird geprüft ob der vordere Teil der Bedingung wahr ist oder der hintere. Richtig ist wenn der vordere schon wahr ist dann spielt beim ODER der hintere Teil keine Rolle mehr.
Das | ist ein bitweises ODER, d.h. jedes Bit des linken Operanden wird mit dem entsprechenden Bit des rechten Operanden per ODER verknüpft.
 

temi

Top Contributor
Keine Ahnung was du mit Kurzschluss und nicht Kurzschluss meinst, aber das || ist ein logisches ODER, d.h. es wird geprüft ob der vordere Teil der Bedingung wahr ist oder der hintere. Richtig ist wenn der vordere schon wahr ist dann spielt beim ODER der hintere Teil keine Rolle mehr.
Das | ist ein bitweises ODER, d.h. jedes Bit des linken Operanden wird mit dem entsprechenden Bit des rechten Operanden per ODER verknüpft.

Aus der Java 8 Spezifikation:
15.22.2. Boolean Logical Operators &, ^, and |
When both operands of a &, ^, or | operator are of type boolean or Boolean, then the type of the bitwise operator expression is boolean. In all cases, the operands are subject to unboxing conversion (§5.1.8) as necessary.

For &, the result value is true if both operand values are true; otherwise, the result is false.

For ^, the result value is true if the operand values are different; otherwise, the result is false.

For |, the result value is false if both operand values are false; otherwise, the result is true.
 

temi

Top Contributor
Ich glaube er wollte damit sagen, dass zwar beide Operatoren wie ein ODER wirken, aber nur bei einem die Inkrementierungen noch zur Ausführung kommen, falls der Wahrheitswert des Gesamtausdrucks schon vorzeitig fest steht.
Ich hatte angenommen, dass wäre ein gängiger Begriff. Ich kenne den jedenfalls schon aus anderen Programmiersprachen. In der "Insel" wird das auch so bezeichnet.
https://de.wikipedia.org/wiki/Kurzschlussauswertung
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Seiteneffekte Java Basics - Anfänger-Themen 3
H Erste Schritte Warum misslingt die Auswertung des ersten Aufrufparameters? Java Basics - Anfänger-Themen 4
topi Parentabfrage, danach "if"-Auswertung Java Basics - Anfänger-Themen 3
D Erste Schritte Weblog-Auswertung Java Basics - Anfänger-Themen 252
D statistische Auswertung Java Basics - Anfänger-Themen 1
C Auswertung Ausdruck mit Punknotation + Objekt als Parameter Java Basics - Anfänger-Themen 3
S JTextfield Auswertung mit FocusListener Java Basics - Anfänger-Themen 7
L Problem mit Auswertung von String mit if Java Basics - Anfänger-Themen 10
T Log-Datei Auswertung Java Basics - Anfänger-Themen 7
B [Javadoc] Tutorial für die Auswertung des docs Java Basics - Anfänger-Themen 15
W Datentypen Auswertung von Ausdrücken (Teil 1) Java Basics - Anfänger-Themen 7
N auswertung von bildern Java Basics - Anfänger-Themen 14
C Denkanstoss für meine Auswertung Java Basics - Anfänger-Themen 5
C Auswertung Java Basics - Anfänger-Themen 5
B Auswertung eines Ausdrucks Java Basics - Anfänger-Themen 10
M seltsames Phänomen in der Auswertung boolscher Variablen Java Basics - Anfänger-Themen 7
V Grafische Auswertung (Ampel-System) Java Basics - Anfänger-Themen 12
M zahlenimport und auswertung Java Basics - Anfänger-Themen 5
C Interface Parameter und Rückgabewerte in Lambda Ausdrücken verwenden Java Basics - Anfänger-Themen 16
W Regulären Ausdrücken Java Basics - Anfänger-Themen 8
A Zusammengesetzte Nomen/Straßennamen mit Regex-Ausdrücken trennen Java Basics - Anfänger-Themen 8
sserio Frage zu Lambda Ausdrücken Java Basics - Anfänger-Themen 7
F Frage zu regulären Ausdrücken Java Basics - Anfänger-Themen 4
E Hilfe bei Lambda-Ausdrücken in BlueJ Java Basics - Anfänger-Themen 1
S Fragen zu Ausdrücken&Bedingungen Java Basics - Anfänger-Themen 5
S Frage zu regulären Ausdrücken Java Basics - Anfänger-Themen 6
B Nach regulären Ausdrücken suchen Java Basics - Anfänger-Themen 14
A Counter für die anzahl von regulären ausdrücken Java Basics - Anfänger-Themen 4
M Rekursion Iterativ ausdrücken Java Basics - Anfänger-Themen 3
X O-Notation ausdrücken Java Basics - Anfänger-Themen 7
F Aus Regulären Ausdrücken Zufallszahlen bilden Java Basics - Anfänger-Themen 6
O regulären Ausdrücken Java Basics - Anfänger-Themen 2
T HTML Kommentare mit regulären Ausdrücken entfernen Java Basics - Anfänger-Themen 4
D Klammern in regulären Ausdrücken Java Basics - Anfänger-Themen 2
G Problem mit Regulären Ausdrücken Java Basics - Anfänger-Themen 4
J Verschiedene Ausgaben bei gleichen Ausdrücken (Typecasting?) Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben