Facebook Twitter Google Maps RSS
Home 未分類 通常の論理演算子と短絡形の論理演算子の違い
formats

通常の論理演算子と短絡形の論理演算子の違い

Published on 2014年7月25日, by in 未分類.

 
こんにちは!
陽気なシステム屋の一員のぴーすぬです。

今回は研修中にC#の参考書を読んでいて、
「なるほど納得!」
したことをご紹介致します!

 
私が目からウロコで納得したこと、それは
<通常の論理演算子と短絡形の論理演算子の違い>
です。
 

すでにご存知の方にしてみれば必要なのは当たり前なのですが、
初めて短絡形を知った時、正直私にはイマイチ必要性が分からなかったのです。

けれども説明を読むと「なるほど納得!」でございました。
その二つの違いと、利点についてお話を致します。

 
まずは通常の演算子と短絡形の演算子について。

●通常の演算子:|、&
●短絡形の演算子:||、&&

書き方の違いは1つか、2つか、というだけです。
「 | 」が論理和演算子で、「 & 」が論理積演算子です。これは短絡形も同じです。
ただ唯一、でも決定的に違うのは、

●通常の演算子 → 常に両方の評価を行う
●短絡形の演算子 → 必要な場合のみ、2番目の評価を行う

ということです。

論理積演算では、1番目の条件が偽の場合、
次の条件が何であっても演算結果は偽となります。
また、論理和演算では1番目の条件が真の場合、
次の条件が何であっても演算結果は真となります。

短絡形の場合は、このように2番目の条件を評価しなくても演算結果が分かる場合、
2番目の条件を評価しないため、効率的な処理が可能です。

 
では次は短絡形の利点を生かした、
実際のプログラムを見てみましょう。

 
例えば、「n」が「number」の約数であるかどうかを判断するプログラムを組むとします。

 
・通常の演算子で組んだ場合

if (n != 0 & (n % number) == 0 )
{
  Console.WriteLine(n + “は約数です。”);
}
else
{
  Console.WriteLine(n + “は約数ではありません。”);
}

 
・短絡形の演算子で組んだ場合

if (n != 0 && (n % number) == 0 )
{
  Console.WriteLine(n + “は約数です。”);
}
else
{
  Console.WriteLine(n + “は約数ではありません。”);
}

この2つの違いは、
nが0だった時に、「n%number」を実行するかどうか
です。

通常の演算子の場合は必ず2つとも評価をするため、
仮にnが0でも除算を行い、エラーとなってしまいます。
けれども短絡形の場合はnが0じゃない時だけ2つ目の評価をするため、
0で除算をしてエラーとなることがありません。

この様に、1つ目の条件が真だった時だけ、
2つ目の条件の判定を行いたいという時に、
短絡形の論理演算子は大変便利です!

 
とここまで色々と述べてきましたが、どうでしょうか、
通常の論理演算子と短絡形の論理演算子の違いとその利点の事をご理解頂けたでしょうか?

この記事を読んで、皆様にも
「なるほど納得!」
と感じて頂けたなら幸いです!

ではまた!

 
アプリ開発実績はこちら

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*