381 Stimmen

Was ist der Unterschied zwischen den Operatoren | und || oder?

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?

92voto

Evan Shaw Punkte 22186

|

condition1 || condition2

E

|

A = 01010101
B = 10101010
A | B = 11111111

A = 00000001
B = 00010000
A | B = 00010001

A = 10001011
B = 00101100

A | B = 10101111

H

S

37voto

nsanders Punkte 11482

Die eine ist ein "bitweises Oder".

10011b | 01000b => 11011b

Das andere ist eine Logik oder.

wahr oder falsch => wahr

21voto

Trevor Abell Punkte 702

Gute Frage. Diese beiden Operatoren funktionieren in PHP und C# auf die gleiche Weise.

| ist ein bitweises ODER. Es vergleicht zwei Werte anhand ihrer Bits. Z.B. 1101 | 0010 = 1111. Dies ist äußerst nützlich bei der Verwendung von Bit-Optionen. Z. B. Lesen = 01 (0X01) Schreiben = 10 (0X02) Lesen-Schreiben = 11 (0X03). Ein nützliches Beispiel wäre das Öffnen von Dateien. Ein einfaches Beispiel wäre:

File.Open(FileAccess.Read | FileAccess.Write);  //Gives read/write access to the file

|| ist ein logisches ODER. Dies ist die Art und Weise, wie die meisten Menschen an ODER denken und zwei Werte auf der Grundlage ihres Wahrheitsgehalts miteinander vergleichen. Z.B.: Ich gehe in den Laden oder ich gehe ins Einkaufszentrum. Diese Form wird am häufigsten im Code verwendet. Zum Beispiel:

if(Name == "Admin" || Name == "Developer") { //allow access } //checks if name equals Admin OR Name equals Developer

PHP-Ressource: http://us3.php.net/language.operators.bitwise

C#-Ressourcen: http://msdn.microsoft.com/en-us/library/kxszd0kx(VS.71).aspx

http://msdn.microsoft.com/en-us/library/6373h346(VS.71).aspx

19voto

Bhai Saab Punkte 139

& - (Bedingung 1 & Bedingung 2): prüft beide Fälle, auch wenn der erste falsch ist

&& - (Bedingung 1 && Bedingung 2): macht sich nicht die Mühe, c falsch ist

&& - Operator macht Ihren Code schneller, professionell & wird selten verwendet

| - (Bedingung 1 | Bedingung 2): prüft beide Fälle, auch wenn Fall 1 wahr ist

|| (Bedingung 1 || Bedingung 2): macht sich nicht die Mühe, zu prüfen wahr ist

|| - Operator macht Ihren Code schneller, beruflich wird | selten verwendet

4voto

vishesh Punkte 1977

Einfaches Beispiel in Java

public class Driver {

  static int x;
  static int y;

public static void main(String[] args) 
throws Exception {

System.out.println("using double pipe");
    if(setX() || setY())
        {System.out.println("x = "+x);
        System.out.println("y = "+y);
        }

System.out.println("using single pipe");
if(setX() | setY())
    {System.out.println("x = "+x);
    System.out.println("y = "+y);
    }

}

 static boolean setX(){
      x=5;
     return true;
  }
 static boolean setY(){
      y=5;
      return true;
  }
}

Ausgabe :

using double pipe
x = 5
y = 0
using single pipe
x = 5
y = 5

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X