Ich habe immer verwendet ||
(zwei Pipes) in OR-Ausdrücken, sowohl in C# als auch in PHP. Gelegentlich sehe ich eine einzelne Pipe verwendet: |
. Was ist der Unterschied zwischen diesen beiden Verwendungen? Gibt es irgendwelche Vorbehalte bei der Verwendung des einen gegenüber dem anderen oder sind sie austauschbar?
Antworten
Zu viele Anzeigen?Das einzelne Rohr, |, ist eine der bitweise Betreiber.
Aus Wikipedia:
In der Programmiersprachenfamilie C ist der bitweise ODER-Operator "|" (Pipe). Auch dieser Operator darf nicht mit seinem booleschen Gegenstück, dem "logischen Oder", verwechselt werden, das seine Operanden als boolesche Werte behandelt und mit "||" (zwei Pipes) geschrieben wird.
Für bitweise |
und Logicall ||
OR
bitweise &
und logisch alle &&
es bedeutet if( a>b | a==0)
in diesem ersten links a>b
wird ausgewertet und dann a==0
wird dann ausgewertet |
Die Operation wird durchgeführt
aber in || if a>b
dann, wenn nicht auf das nächste RHS geprüft wird
Gleiches gilt für & und &&
if(A>0 & B>0)
wird LHS und dann RHS ausgewertet und dann bitweise & durchgeführt, aber
in (A>0 && B>0)
if(A>0)
es false
(LHS) wird sie direkt return false;