C++ の or 演算子
この記事では、C++ の OR
演算子とその使用例について説明します。他のプログラミング言語と同様に、C++ には論理的な OR
とビット単位の OR
があります。それらを一つずつ見ていきましょう。
C++ の論理 OR
演算子
論理演算子を使用して、2つ以上のオペランド/式を比較し、true
または false
の値を返します。これらは、意思決定のシナリオで役立ちます。
論理 OR
は||
を使用して表されます。
構文:
expression1 || expression2
論理 OR
演算子||
戻り値:
true
- 少なくとも 1つのオペランドまたは式が true の場合。false
- すべてのオペランドが false の場合に限ります。
論理 OR
||
の真理値表。
A
と B
はオペランドです。
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
の意味 expression1
が true
の場合、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=0
は false
であることを意味します。したがって、ゼロ以外の値は 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
の場合、最初に a
と b
をバイナリ形式に変換してから、各ビットに OR
を適用する必要があります。a = 010
と b = 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
では、演算が各ビットに適用され、整数値は出力として返されます。