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?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
& - (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
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
- See previous answers
- Weitere Antworten anzeigen