C ++の演算子
演算子は、特定の数学的または論理的操作を実行するようにコンパイラーに指示する記号です。C ++は組み込み演算子が豊富で、次のタイプの演算子を提供します-
- 算術演算子
- 関係演算子
- 論理演算子
- ビット演算子
- 代入演算子
- その他の演算子
この章では、算術、関係、論理、ビット単位、代入、およびその他の演算子を1つずつ調べます。
算術演算子
C ++言語でサポートされている次の算術演算子があります-
変数Aが10を保持し、変数Bが20を保持すると仮定すると、-
例を表示
オペレーター | 説明 | 例 |
---|---|---|
+ | 2つのオペランドを追加します | A + Bは30を与えます |
- | 最初のオペランドから2番目のオペランドを減算します | A-Bは-10を与えます |
* | 両方のオペランドを乗算します | A * Bは200を与えます |
/ | 分子を分子で割る | B / Aは2を与えます |
% | モジュラス演算子と整数除算後の余り | B%Aは0を与えます |
++ | インクリメント演算子、整数値を1つ増やします | A ++は11を与えます |
- | デクリメント演算子、整数値を1つ減らします | A--は9を与えます |
関係演算子
C ++言語でサポートされている次の関係演算子があります
変数Aが10を保持し、変数Bが20を保持すると仮定すると、-
例を表示
オペレーター | 説明 | 例 |
---|---|---|
== | 2つのオペランドの値が等しいかどうかをチェックし、等しい場合は条件が真になります。 | (A == B)は真ではありません。 |
!= | 2つのオペランドの値が等しいかどうかをチェックし、値が等しくない場合は条件が真になります。 | (A!= B)は真です。 |
>> | 左のオペランドの値が右のオペランドの値より大きいかどうかを確認します。大きい場合は、条件が真になります。 | (A> B)は正しくありません。 |
< | 左のオペランドの値が右のオペランドの値よりも小さいかどうかを確認します。小さい場合は、条件が真になります。 | (A <B)は真です。 |
> = | 左のオペランドの値が右のオペランドの値以上であるかどうかをチェックします。はいの場合、条件は真になります。 | (A> = B)は正しくありません。 |
<= | 左のオペランドの値が右のオペランドの値以下であるかどうかをチェックします。はいの場合、条件は真になります。 | (A <= B)は真です。 |
論理演算子
C ++言語でサポートされている論理演算子は次のとおりです。
変数Aが1を保持し、変数Bが0を保持すると仮定すると、-
例を表示
オペレーター | 説明 | 例 |
---|---|---|
&& | 論理AND演算子と呼ばれます。両方のオペランドがゼロ以外の場合、条件は真になります。 | (A && B)は誤りです。 |
|| | 論理OR演算子と呼ばれます。2つのオペランドのいずれかがゼロ以外の場合、条件は真になります。 | (A || B)は真です。 |
! | 論理NOT演算子と呼ばれます。オペランドの論理状態を逆にするために使用します。条件がtrueの場合、LogicalNOT演算子はfalseになります。 | !(A && B)は真です。 |
ビット演算子
ビット単位の演算子はビットを処理し、ビットごとの演算を実行します。&、|、^の真理値表は次のとおりです-
p | q | p&q | p | q | p ^ q |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 |
A = 60の場合を想定します。およびB = 13; 現在、バイナリ形式では次のようになります-
A = 0011 1100
B = 0000 1101
-----------------
A&B = 0000 1100
A | B = 0011 1101
A ^ B = 0011 0001
〜A = 1100 0011
C ++言語でサポートされているビット演算子を次の表に示します。変数Aが60を保持し、変数Bが13を保持すると仮定すると、-
例を表示
オペレーター | 説明 | 例 |
---|---|---|
& | バイナリAND演算子は、両方のオペランドに存在する場合、結果にビットをコピーします。 | (A&B)は00001100である12を与えます |
| | バイナリOR演算子は、いずれかのオペランドに存在する場合、ビットをコピーします。 | (A | B)は611 1101である61を与えます |
^ | バイナリXOR演算子は、ビットが両方ではなく一方のオペランドに設定されている場合、そのビットをコピーします。 | (A ^ B)は、00110001である49を与えます。 |
〜 | Binary Ones Complement Operatorは単項であり、ビットを「反転」させる効果があります。 | (〜A)は、符号付き2進数のため、2の補数形式で11000011である-61を返します。 |
<< | バイナリ左シフト演算子。左のオペランドの値は、右のオペランドで指定されたビット数だけ左に移動します。 | << 2は、11110000である240を与えます |
>> | バイナリ右シフト演算子。左のオペランドの値は、右のオペランドで指定されたビット数だけ右に移動します。 | >> 2は、00001111である15を与えます |
代入演算子
C ++言語でサポートされている次の代入演算子があります-
例を表示
オペレーター | 説明 | 例 |
---|---|---|
= | 単純な代入演算子。右側のオペランドから左側のオペランドに値を代入します。 | C = A + Bは、A + Bの値をCに割り当てます |
+ = | AND代入演算子を追加します。これは、右のオペランドを左のオペランドに追加し、結果を左のオペランドに割り当てます。 | C + = AはC = C + Aと同等です |
-= | AND代入演算子を減算します。左オペランドから右オペランドを減算し、その結果を左オペランドに代入します。 | C- = AはC = C-Aと同等です |
* = | 乗算AND代入演算子。右オペランドと左オペランドを乗算し、その結果を左オペランドに代入します。 | C * = AはC = C * Aと同等です |
/ = | AND代入演算子を除算します。左オペランドを右オペランドで除算し、結果を左オペランドに代入します。 | C / = AはC = C / Aと同等です |
%= | モジュラスAND代入演算子。2つのオペランドを使用してモジュラスを取り、その結果を左のオペランドに割り当てます。 | C%= AはC = C%Aと同等です |
<< = | 左シフトAND代入演算子。 | C << = 2はC = C << 2と同じです |
>> = | 右シフトAND代入演算子。 | C >> = 2はC = C >> 2と同じです |
&= | ビットごとのAND代入演算子。 | C&= 2はC = C&2と同じです |
^ = | ビット単位の排他的論理和と代入演算子。 | C ^ = 2はC = C ^ 2と同じです |
| = | ビット単位の包括的ORおよび代入演算子。 | C | = 2はC = C |と同じです 2 |
その他の演算子
次の表に、C ++がサポートするその他の演算子を示します。
シニア番号 | オペレーターと説明 |
---|---|
1 | sizeof sizeof演算子は、変数のサイズを返します。たとえば、sizeof(a)、ここで「a」は整数であり、4を返します。 |
2 | Condition ? X : Y 条件演算子(?)。Conditionがtrueの場合、Xの値を返し、それ以外の場合はYの値を返します。 |
3 | , コンマ演算子を使用すると、一連の操作が実行されます。コンマ式全体の値は、コンマ区切りリストの最後の式の値です。 |
4 | . (dot) and -> (arrow) メンバー演算子は、クラス、構造体、および共用体の個々のメンバーを参照するために使用されます。 |
5 | Cast キャスト演算子は、あるデータ型を別のデータ型に変換します。たとえば、int(2.2000)は2を返します。 |
6 | & ポインタ演算子&は変数のアドレスを返します。たとえば、&a; 変数の実際のアドレスを示します。 |
7 | * ポインター演算子*は変数へのポインターです。たとえば、* var; 変数varへのポインタになります。 |
C ++での演算子の優先順位
演算子の優先順位は、式内の用語のグループ化を決定します。これは、式の評価方法に影響します。特定の演算子は他の演算子よりも優先されます。たとえば、乗算演算子は加算演算子よりも優先されます-
たとえば、x = 7 + 3 * 2; ここでは、演算子*の優先順位が+よりも高いため、xには20ではなく13が割り当てられます。したがって、最初に3 * 2が乗算され、次に7に加算されます。
ここでは、優先順位が最も高い演算子がテーブルの上部に表示され、優先順位が最も低い演算子が下部に表示されます。式内では、優先順位の高い演算子が最初に評価されます。
例を表示
カテゴリー | オペレーター | 結合性 |
---|---|---|
Postfix | ()[]->。++ ---- | 左から右へ |
単項 | +-!〜++ ---(タイプ)*&sizeof | 右から左に |
乗法 | * /% | 左から右へ |
添加剤 | +- | 左から右へ |
シフト | << >> | 左から右へ |
関連した | << = >> = | 左から右へ |
平等 | ==!= | 左から右へ |
ビットごとのAND | & | 左から右へ |
ビット単位のXOR | ^ | 左から右へ |
ビットごとのOR | | | 左から右へ |
論理積 | && | 左から右へ |
論理OR | || | 左から右へ |
条件付き | ?: | 右から左に |
割り当て | = + =-= * = / =%= >> = << =&= ^ = | = | 右から左に |
コンマ | 、 | 左から右へ |