Laden...

Was bedeutet der Ausdruck "false || true"?

Erstellt von syberstef vor 8 Jahren Letzter Beitrag vor 8 Jahren 4.291 Views
S
syberstef Themenstarter:in
5 Beiträge seit 2015
vor 8 Jahren
Was bedeutet der Ausdruck "false || true"?

Hallo,

ich versuche gerade C# zu lernen mit Schrödinger programmiert C#.
Eigentlich echt cooles Buch, doch verstehe ich auf Seite 58 den Sinn mal so überhaupt nicht.

Dort heißt es:

bool ergebnis = false || true;
ergebnis |= false;
ergebnis = !ergebnis;
ergebnis |= !true;

Vom Prinzip das bool nur true oder false sein kann ist mir klar!
Wenn z.B. Ergebnis TRUE ist und ich ein ! davor mache dann ist es false! (soweit auch klar)!

ABER.

bool ergebnis = false || true;

Ich weise jetzt der Variable den Wert false oder true zu???
Im Buch steht er ist in der 1. Zeile true in der zweiten true in der dritten Zeile false und in der verten Zeile false!

Kann mir das bitte mal jemand erklären???

Sehr verwirrent und sinnlos erscheint mir das irgendwie.

DANKE EUCH schonmal für die Hilfe!!!

3.003 Beiträge seit 2006
vor 8 Jahren

Falsches Forum, erst einmal.

Zum anderen ist das jetzt schon zum zweiten Mal hier im Forum in kurzer Zeit, dass dieses Buch in diesem Zusammenhang irgendwie den Leser mehr verwirrt als alles andere.

Das sind einfache Logikoperationen.

false || true
Ist immer true. || heisst, einer der Operanden muss wahr sein, dann ist das Ergebnis wahr. Es dürfen auch zwei sein.

ergebnis |= ist eine Zuweisung mit Bitoperator. Das ergibt so nur begrenzt Sinn. Ich würde sagen, vergiss den Absatz. Lies das hier: https://msdn.microsoft.com/de-de/library/kxszd0kx.aspx

Und probier es einfach selbst aus. Lass dir gesagt sein, dass, wenn du diesen Operator wirklich brauchen solltest, du wissen wirst, was er tut. Wenn du das nicht weisst, brauchst du ihn nicht.

Muss mir dieses seltsame Buch mal selber anschaun. Irgendwie riecht das nach Bockmist.

LaTino

"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)

16.842 Beiträge seit 2008
vor 8 Jahren

Es dürfen auch zwei sein.

Es wird aber nicht geprüft, ob alles wahr ist, sondern es wird die Überprüfung abgebrochen, sobald etwas wahr ist.
Für Algorithmen kann die Reihenfolge also durchaus wichtig sein, was die Performance betrifft (lohnt sich aber wirklich nur bei oft aufgerufenen Algorithmen).

2.207 Beiträge seit 2011
vor 8 Jahren

Du kannst es dir auch einfacher machen und mal Variablen für das true/false setzen.


bool isAdult = false;
bool isChild = true;

bool isHuman = isAdult || isChild;

Dort steht nichts andres als die Zeile, die du nicht verstehst. Wenn man das nun liest wirds vielleicht verständlicher.

Ist aber nur im Zusatz zu dem, was LaTino und Abt schon gesagt haben.

127 Beiträge seit 2015
vor 8 Jahren

Und was noch keiner so direkt zum Ausdruck gebracht hat: || ist ein logisches Oder
Das heißt


isAdult || isChild 

ließt sich eigentlich wie:


isAdult oder isChild;

Vielleicht verstehst du den Ausdruck und das Ergebnis damit noch ein wenig einfacher ...

3.003 Beiträge seit 2006
vor 8 Jahren

Das ist irreführend. IsAdult und IsChild sind mutually exclusive (einander ausschließend), also nur eins von beiden kann zu einem Zeitpunkt wahr sein.

Man veranschaulicht sich das am besten mit zwei Aussagen, die komplett unabhängig voneinander sind. A: "heute ist Montag", und B: "es regnet".

if(A || B) BleibImBett(); Man bleibt auch im Bett, wenn es Sonntag ist, aber regnet.
if(A && b) BleibImBett(); An Montagen, an denen es regnet, bleibt man im Bett.

Hausaufgabe: Operatoren "A^B", "A!=B", "!A && B", "!A && !B", "!A || !B"
Ergebnisse in eine Kreuztabelle eintragen und vergleichen.

Hat aber nur noch bedingt was mit Programmierung zu tun. (Soll heißen es ist die Grundlage für's Programmieren.)

LaTino

"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)