Einzelnen Beitrag anzeigen

Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#4

AW: Handle Access Rights - Verständnisfrage

  Alt 9. Jan 2011, 13:36
Die "oder" und "und" Wörter im MSDN Text sind eine Wortart (Konjunktion) und haben nicht unbedingt dieselbe logische Aussagekraft, wie die Bitoperatoren in Delphi.
Zumal hier eine entscheidende Unterscheidung in Delphi nicht vorhanden ist. In C/C++ und anderen Sprachen unterscheidet man zwichen bitweisen und logischen Operatoren. Die Entsprechung für "or" aus Delphi wäre dann im Kontext einer Abfrage üblicherweise (logischer Operator):

Code:
if (ausdruck || ausdruck2) { ... }
... wohingegen beim Kombinieren von Bits der bitweise Operator benutzt würde (ja, es geht auch kürzer, aber hier geht's um Verständnis):

Code:
ausdruck = ausdruck | ausdruck2;
Man kann zwar prinzipiell auch den bitweisen Operator für Abfragen mißbrauchen:

Code:
if (ausdruck | ausdruck2) { ... }
... darf sich dann aber je nach Kontext nicht über geändertes Laufzeitverhalten oder gar geänderte Logik wundern. Denn bei:

Code:
if (foo || bar || baz) ...
... werden die Checks schon abgebrochen wenn "foo" oder "foo || bar" wahr sind, wohingegen bei:

Code:
if (foo | bar | baz) ...
... alle Werte kombiniert werden und dann geguckt wird, ob sie Null oder nicht Null sind.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat