質問
私は常に使用されてい ||
(パイプ)、両方のクライアントまで、フルのC#とクリアしました。がんシングルパイプの使用 |
.の違いは何ですか二つの用途?ある点が他にも交換可能?
解決
のように &
や &&
オペレーター、ダブルオペレーターである"短回路"。
例えば:
if(condition1 || condition2 || condition3)
If条件1がtrueの場合、条件2/3はないことを確認します。
if(condition1 | condition2 | condition3)
このチェック条件2が3の場合でも、1はtrueです。としての条件でも高機能できる良い性能を向上させ使用します。
が大きな問題点,NullReferencesます。例えば:
if(class != null && class.someVar < 20)
場合にクラスがnullの場合、合算を停止していた class != null
はfalseです。場合にのみ使用でチェックしてみて class.someVar
とんも NullReferenceException
.の又は-オペレーターの場合、そのトラップとしてこすトリガーの悪いものがいによる指導を続けたのである。
わないよりは、シングル &
または |
事業者がない限り、設計段階で一体化してデザインが各々の状態で機能していると見ることができる実行されます。音のようにデザインの匂いが時(まれることが可能になります清潔ないんですよ。の &
オペレーターは"走りこれらの3つの機能がfalseを返す場合、実行しelseブロック"、 |
い"のみのelseブロックしない場合はfalseを返し"で有用なものとして、しばしばこのデザインの香りがする。
ある第二の利用 |
や &
オペレーターは: ビット単位操作.
他のヒント
||は論理OR演算子です。そのような基本的にその場所です。この使用条件となる場合など。
condition1 || condition2
に評価しtrueの場合は条件1またはcondition2はtrueです。
|はビット単位またはオペレーターでを動作させるために使用される二つの番号見各ビット毎に個別に合のビットが1つの番号、その後のビットが1もございますここではいくつかの例を示します:
A = 01010101
B = 10101010
A | B = 11111111
A = 00000001
B = 00010000
A | B = 00010001
A = 10001011
B = 00101100
A | B = 10101111
今意いたしました。
う答えの問題ではないが注意のほか"を知されます。" 彼らは互換性がない、彼らが全く違います。
一つは"ビット単位または".
10011b|01000b=>11011b
そのロジック。
trueまたはfalse=>true
良い質問です。これら二つの事業者にPHP、C#.
ここではビット単位でいます。その二つの値によります。E.g.1101|0010=1111.こして極めて有用である.しかし,使用時のビットオプションE.g.読=01(0X01)Write=10(0X02)Read-Write=11日(0X03).一有することができ開ファイルです。簡単な例することはできない。
File.Open(FileAccess.Read | FileAccess.Write); //Gives read/write access to the file
ここでは論理OR.ぐことができるというのとは対値に基づくり実です。E.g.私の店に行くのモールがあります。このとれた動きをすることにより、コードです。E.g.
if(Name == "Admin" || Name == "Developer) { //allow access } //checks if name equals Admin OR Name equals Developer
PHP資源: http://us3.php.net/language.operators.bitwise
C#ソース: http://msdn.microsoft.com/en-us/library/kxszd0kx(VS.71).aspx
http://msdn.microsoft.com/en-us/library/6373h346(VS.71).aspx
簡単な例を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;
}
}
出力:
using double pipe
x = 5
y = 0
using single pipe
x = 5
y = 5
&-(条件1&条件2):チェックされることにな例の場合でも最初はfalse
&&-(条件1&&条件2):同線なものをわざわざチェックの第二の場合の場合 はfalse
&&-オペレーターをコード、速く走プ&はほとんど使われていません
|-(条件1件2):チェックされることにな場合1はtrue
||-(条件1||状態の2):同線なものをわざわざチェック第場合第 一つはtrue
||-オペレーターをコード実行時に,専門的にはほとんど使われていません
のシングルパイプ、|、、 ビット単位の います。
Wikipediaから:
Cプログラミング言語の家族は、ビット単位またはオペレーターが"|"(パイプ).このオペレーターはならないと混同されるべきではそのBoolean"論理的には"相手を扱い、そのオペランドとしてBoolean値は"||"(パイプ).
その数学的定義、および、バイナリーペかを検証する右と右軸条件を問わず、同様に、変&.
||よび&&の性質を改変したり、事業者による止めることによって、場の量対自己資本比率の状態な充実しています。
のオペレーターをビット単位の論理和の二つのオペランドが意味すると両側を行い、評価しなければならなfalseでfalseを返す)が、オペレーターのみの評価のオペレーターが必要です。
http://msdn.microsoft.com/en-us/library/kxszd0kx(VS.71).aspx
http://msdn.microsoft.com/en-us/library/6373h346(VS.71).aspx
のsingeパイプには"|(スラッシュ)"の"ビット単位で"はや用のものをご使用くださいが分かっている場合は、いかが?しています。のダブルパイプ"||"は論理or、論理的諸表のように、"x==0||x==1".
こちらの例のどのビット単位は:if a=0101b=0011、そのa|b=0111.いを取り扱う論理システムがゼロでないとしてtrueのビット単位または法と同様に、論理orで相手(ビット単位で、"&")はこれまでのとおりです。また、ビット単位または行いません短絡評価をします。
||(配管)が通常の 論理 やつ|(一パイプ) バイナリー います。の私の頭のが思いつかないの時間の違い型違い希望アレば大きなgotchaよい結果を割り当何かるようにします。しかしいい誰かい状態です。
編集:なんと、その他の回答に時間がかかったとのことを書きます。
ビット単位で(|)vs.論理(||)!思考の論理としての同等物のJavaを比較する一部の識別"部品"ですが、ビット単位のオペレーターでこれらのオブジェクトで見れば、視覚的に双子のように論理的なせんし、DNAサンプルを見る0と1のです。