C++ の or 演算子

Suraj P 2023年10月12日
  1. C++ の論理 OR 演算子
  2. C++ のビット単位の OR 演算子
  3. まとめ
C++ の or 演算子

この記事では、C++ の OR 演算子とその使用例について説明します。他のプログラミング言語と同様に、C++ には論理的な OR とビット単位の OR があります。それらを一つずつ見ていきましょう。

C++ の論理 OR 演算子

論理演算子を使用して、2つ以上のオペランド/式を比較し、true または false の値を返します。これらは、意思決定のシナリオで役立ちます。

論理 OR||を使用して表されます。

構文:

expression1 || expression2

論理 OR 演算子||戻り値:

  1. true - 少なくとも 1つのオペランドまたは式が true の場合。
  2. false - すべてのオペランドが false の場合に限ります。

論理 OR ||の真理値表。

AB はオペランドです。

A B A||B
F F F
F T T
T F T
T T T

両方のオペランドが false の場合にのみ表示されます。出力は false として取得されます。C または C++ では、false はゼロであり、true はゼロ以外の値です。通常、整数 1 を使用して表されます。

例:

意思決定で論理 OR がどのように使用されるかを見てみましょう。ユーザーが小文字を入力し、それが母音であるか子音であるかを知りたい場合を考えてみます。

#include <iostream>
using namespace std;

int main() {
  char ch;
  cin >> ch;

  if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u') {
    cout << "It's is a VOWEL.";
  } else
    cout << "It's a consonant";
}

入力が z の場合、if ステートメント内のすべての OR 条件は false であり、false と評価され、if 条件は失敗します。次に、else ブロックが実行されます。

出力:

z
It's a consonant

論理 OR について覚えておくべき興味深い特性の 1つは、左側の部分が true の場合、式全体がとにかく true であるため、右側の部分は評価されないことです。

expression1||expression2 の意味 expression1true の場合、expression2 は評価されません。

コード例:

#include <iostream>
using namespace std;

int main() {
  int a = 10;
  int b = (a = a > 5 ? 25 : 0) || 0;

  cout << "Value of a " << a << endl;
  cout << "Value of b " << b << endl;

  // part two
  int x = 9;
  int c = (x = 0) || (x = 6789);

  cout << "Value of x " << x << endl;
  cout << "Value of c " << c << endl;
}

出力:

Value of a 25
Value of b 1
Value of x 6789
Value of c 1

説明:(a=a>5?25:0)true と評価されます。これは、a が 5 より大きく、25 が a に割り当てられており、C++ では 0(false) 以外の場合、すべての値は true と見なされます。

論理 OR の左側の部分は true であるため、右側は評価されません。全体的な式の値は true、つまり 1 であり、b に割り当てられます。

プログラムのパート 2c = (x=0) || (x=6789)、LHSx=0false であることを意味します。したがって、ゼロ以外の値は true であるため、RHS は x=6789 と評価され、式全体が true になり、1 c に割り当てられます。

C++ のビット単位の OR 演算子

単一の垂直線|ビット単位の OR を表します。論理演算子とビット演算子の主な違いは、論理演算子(&&||、および!)の結果が 0(false) または 1(true) のいずれかであるということですが、ビット演算子は整数値です。

| C または C++ の(ビット単位の OR)は、オペランドとして 2つの数値を取り、2つの数値のすべてのビットに対して OR を実行し、結果を返します。

コード例:

#include <iostream>
using namespace std;

int main() {
  int a = 2;
  int b = 4;

  int c = a || b;  // logical OR

  int d = a | b;  // bitwise OR

  cout << "Value of c " << c << endl;
  cout << "value of d " << d << endl;
}

出力:

Value of c 1
value of d 6

説明:ゼロ以外の値である a||b, a=2 の場合、true と評価されるため、c の値は true になります。

a|b の場合、最初に ab をバイナリ形式に変換してから、各ビットに OR を適用する必要があります。a = 010b = 100 をバイナリで適用します。各ビットで OR を出力すると、変数 d に割り当てられた 6 として出力されます。

 0 1 0   this is a=2
 1 0 0    this is b=4
-------
 1 1 0  //this is 6 in decimal
-------

まとめ

この記事では、論理演算子とビット単位の OR 演算子について学習しました。

論理 OR が意思決定に使用され、ゼロ以外のオペランド/式は 1(true) と見なされるのに対し、ビット単位の OR では、演算が各ビットに適用され、整数値は出力として返されます。

著者: Suraj P
Suraj P avatar Suraj P avatar

A technophile and a Big Data developer by passion. Loves developing advance C++ and Java applications in free time works as SME at Chegg where I help students with there doubts and assignments in the field of Computer Science.

LinkedIn GitHub

関連記事 - C++ Operator