Was tut der | Operator?

compauer

Mitglied
Hallo,
wie die Frage oben beschreibt, was tut der | Operator? Wenn ich z.B. zwei Integerwerte damit festlege:

Java:
int x = 3 | 5;

was genau berechnet er oder was tut er?

Viele Grüße,
compauer
 
Das ist ein bitweises Oder.

Wenn du dir 3 und 5 als 4 Bit vorstellst erhältst du 0011b und 1001b. Wobei links das MSB und rechts das LSB stehen.

Wenn du das jetzt Oder verknüpfst (Definition wie folgt: 0 or 0 = 0, 0 or 1 = 1, 1 or 1 = 1, 1 or 0 = 1) erhältst du folgendes:

Code:
  0011
  1001
  -----
  1011

also bekommst du 7 heraus.
 
Das ist ein bitweises Oder.

Wenn du dir 3 und 5 als 4 Bit vorstellst erhältst du 0011b und 1001b. Wobei links das MSB und rechts das LSB stehen.

Wenn du das jetzt Oder verknüpfst (Definition wie folgt: 0 or 0 = 0, 0 or 1 = 1, 1 or 1 = 1, 1 or 0 = 1) erhältst du folgendes:

Code:
  0011
  1001
  -----
  1011

also bekommst du 7 heraus.

Ahsoo ist das 🙂 Hast glaub ich nen kleinen dreher
Also in dem Fall also 0011 und 0101:
0011
0101
-----
0111


Danke dir 🙂
 
Ergänzend sei angemerkt, dass der [c]|[/c]-Operator auch für booleans angewandt werden kann, und sich dadurch von [c]||[/c] unterscheidet, dass der zweite Ausdruck auch dann ausgewertet wird, wenn der erste Ausdruck [c]true[/c] ist (und das Ergebnis damit schon feststeht).
 
Ergänzend sei angemerkt, dass der [c]|[/c]-Operator auch für booleans angewandt werden kann, und sich dadurch von [c]||[/c] unterscheidet, dass der zweite Ausdruck auch dann ausgewertet wird, wenn der erste Ausdruck [c]true[/c] ist (und das Ergebnis damit schon feststeht).

Vielleicht blöd gefragt, aber wann macht das Sinn, den zweiten Ausdruck auszuwerten, wenn das Ergebnis sowieso schon fest steht? Mir fällt dazu kein Beispiel ein.
 
Wenn du auf jeden Fall möchtest, dass die zweite Methode auch ausgeführt wird weil sie irgendend einen Seiteneffekt hat wie z.B. eine UI-Komponente schalten oder in Log schreiben.

Generell ist das IMHO eher schlechter Programmierstil und sollte vermieden werden. Wenn etwas ausgeführt gehört, soll es so auch im Quellcode stehen.
 
Manchmal kommt man ohne den nicht-kurzschließenden Oder-Operator nicht aus, immer, wenn alle sich in der zu prüfenden Bedingung befindenden Methoden/Zuweisungen (nicht einfach nur arithmetische Bedingungen/Ausdrücke) auch ausgeführt werden müssen/sollten. Stichwort ist hier Seiteneffekte
 
Zuletzt bearbeitet von einem Moderator:

Neue Themen


Zurück
Oben