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 つのオペランドの値が等しいかどうかをチェックし、等しい場合は条件が true になります。 | (A ==B) は正しくありません。 |
!= | 2 つのオペランドの値が等しいかどうかをチェックします。値が等しくない場合、条件は true になります。 | (A !=B) は真です。 |
> | 左のオペランドの値が右のオペランドの値よりも大きいかどうかをチェックし、そうであれば、条件は true になります。 | (A> B) は正しくありません。 |
< | 左のオペランドの値が右のオペランドの値より小さいかどうかをチェックし、そうであれば条件は true になります。 | (A |
>= | 左のオペランドの値が右のオペランドの値以上かどうかをチェックし、そうであれば条件は true になります。 | (A>=B) は正しくありません。 |
<= | 左のオペランドの値が右のオペランドの値以下かどうかをチェックし、そうであれば条件は true になります。 | (A <=B) は真です。 |
論理演算子
次の表は、C# でサポートされているすべての論理演算子を示しています。変数 A を想定 ブール値 true と変数 B を保持 ブール値 false を保持し、その後 −
例を表示
演算子 | 説明 | 例 |
---|---|---|
&& | 論理 AND 演算子と呼ばれます。両方のオペランドがゼロでない場合、条件は true になります。 | (A &&B) は偽です。 |
|| | 論理 OR 演算子と呼ばれます。 2 つのオペランドのいずれかがゼロでない場合、条件は true になります。 | (A || B) は真です。 |
! | 論理 NOT 演算子と呼ばれます。オペランドの論理状態を逆にするために使用します。条件が true の場合、論理 NOT 演算子は 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 を保持すると仮定すると、-
例を表示
演算子 | 説明 | 例 |
---|---|---|
& | 2 項 AND 演算子は、両方のオペランドに存在する場合、ビットを結果にコピーします。 | (A &B) =12、つまり 0000 1100 |
| | バイナリ OR 演算子は、どちらかのオペランドに存在するビットをコピーします。 | (A | B) =61、つまり 0011 1101 |
^ | バイナリ XOR 演算子は、両方ではなく一方のオペランドに設定されている場合、ビットをコピーします。 | (A ^ B) =49、つまり 0011 0001 |
~ | 2 進数の 1 の補数演算子は単項であり、ビットを「反転」する効果があります。 | (~A ) =-61、これは符号付き 2 進数のため、2 の補数で 1100 0011 です。 |
<< | バイナリ左シフト演算子。左オペランドの値は、右オペランドで指定されたビット数だけ左に移動します。 | A <<2 =240、つまり 1111 0000 |
>> | 二項右シフト演算子。左オペランドの値は、右オペランドで指定されたビット数だけ右に移動します。 | A>> 2 =15、つまり 0000 1111 |
代入演算子
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 と同じです |
^= | ビットごとの排他的 OR および代入演算子 | C ^=2 は C =C ^ 2 と同じです |
|= | ビットごとの包含 OR と代入演算子 | C |=2 は C =C | と同じです。 2 |
その他の演算子
sizeof、typeof など、他に重要な演算子はほとんどありません。 と ? : C# でサポートされています。
例を表示
演算子 | 説明 | 例 |
---|---|---|
sizeof() | データ型のサイズを返します。 | sizeof(int)、4 を返します。 |
typeof() | クラスの型を返します。 | typeof(StreamReader); |
& | 変数のアドレスを返します。 | &a;変数の実際のアドレスを返します。 |
* | 変数へのポインタ | *a;変数への「a」という名前のポインタを作成します。 |
? : | 条件式 | 条件が真の場合?次に値 X :それ以外の場合は値 Y |
は | オブジェクトが特定のタイプかどうかを判断します。 | If( Ford is Car) // Ford が Car クラスのオブジェクトかどうかをチェックします。 |
as | キャストが失敗した場合、例外を発生させずにキャストします。 | Object obj =new StringReader("Hello"); StringReader r =StringReader としての obj; |
C# での演算子の優先順位
演算子の優先順位によって、式内の用語のグループ化が決まります。これは、式の評価に影響します。特定の演算子は、他の演算子よりも優先順位が高くなります。たとえば、乗算演算子は加算演算子よりも優先されます。
たとえば、x =7 + 3 * 2;ここで、x には 20 ではなく 13 が割り当てられます。これは、演算子 * が + よりも優先順位が高いためです。最初の評価は 3*2 に対して行われ、次に 7 がそれに追加されます。
ここでは、優先順位が最も高い演算子が表の上部に表示され、最も低い演算子が下部に表示されます。式内では、優先順位の高い演算子が最初に評価されます。
例を表示
カテゴリ | 演算子 | 連想性 |
---|---|---|
後置 | () [] -> . ++ - - | 左から右 |
単項 | + - ! ~ ++ - - (タイプ)* &sizeof | 右から左 |
乗法 | * / % | 左から右 |
添加剤 | + - | 左から右 |
シフト | <<>> | 左から右 |
リレーショナル | <<=>>= | 左から右 |
平等 | ==!= | 左から右 |
ビットごとの AND | & | 左から右 |
ビット単位の XOR | ^ | 左から右 |
ビットごとの OR | | | 左から右 |
論理積 | && | 左から右 |
論理和 | || | 左から右 |
条件付き | ?: | 右から左 |
任務 | =+=-=*=/=%=>>=<<=&=^=|= | 右から左 |
カンマ | , | 左から右 |
C言語