ROBOT PAYMENT TECH-BLOG

株式会社ROBOT PAYMENTのテックブログです

OR演算子の話

こんにちは。決済システムでエンジニアをやっております hoshino33 です。
今回はC#のOR演算子|||について記載したいと思います。

はじめに

普段、コーディングする際は||でしか記載していないので、|||の違いを聞かれたときになんだっけとなってしまいました。答えられる方は復習として、答えられない方は参考になれば幸いです。

OR演算子について

結論からいうと、違いは左側がtureだったとしても右側を評価するかしないかになります。

|(論理 OR 演算子)について

| 演算子がそのオペランドの論理 OR を計算します。 x または y のどちらかが true と評価された場合、x | y の結果は true になります。 それ以外の場合、結果は false です。 | 演算子は、左側のオペランドが true と評価されても両方のオペランドを評価するため、操作結果は右側のオペランドの値に関係なく、true になります。

||(条件付き論理 OR 演算子)について

条件論理 OR 演算子 || は、"短絡" 論理 OR 演算子とも呼ばれ、そのオペランドの論理 OR を計算します。 x または y のどちらかが true と評価された場合、x || y の結果は true になります。 それ以外の場合、結果は false です。 x が true に評価される場合、y は評価されません。

ブール論理演算子より引用

コードで確認

OR演算子|||の動きを実際に見て見ます。 また、AND演算子&&&についても同じことが言えるのであわせて確認します。

void Main()  
{  
    Console.WriteLine("-- 論理 OR 演算子 |");
    var a = true | Method();  
    Console.WriteLine(a);  
  
    Console.WriteLine("-- 条件付き論理 OR 演算子 ||");
    var b = true || Method();  
    Console.WriteLine(b);  
      
    Console.WriteLine("-- 論理 AND  演算子 &");
    var c = false & Method();  
    Console.WriteLine(c);  
  
    Console.WriteLine("-- 条件付き論理 AND  演算子 &&");
    var d = false && Method();  
    Console.WriteLine(d);  
}

bool Method()  
{  
    Console.WriteLine("Method");
    return true;  
}

実行結果

-- 論理 OR 演算子 |
Method
True
-- 条件付き論理 OR 演算子 ||
True
-- 論理 AND  演算子 &
Method
False
-- 条件付き論理 AND  演算子 &&
False

まとめ

C#と書きましたがOR演算子|||の記述ができる言語は同じ挙動になると思います。 普段から||を使用しているので、あまり意識していなかったのですが、そういえばそうだったとかあるので時間がある際は立ち止まって動作を見てみるのもいいですね。 そもそも、|を利用するシーンってあまりないと思うのですがどんなときがあるのでしょうかね。ちょっと調べてみたのですがビット操作するときぐらいですかね。現代ではあまりなさそうですね。



We are hiring!!

ROBOT PAYMENTでは一緒に働く仲間を募集しています!!!

speakerdeck.com
www.robotpayment.co.jp