こんにちは。決済システムでエンジニアをやっております 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