演算子とは、演算を表す記号のことです。また演算が作用する対象をオペランドといいます。

目次

四則演算子など

2つのオペランドに対し、加算、減算などを行う演算子です。

演算子 意味 答え
+ 加算 1 + 2;
2147483647 + 1;
2147483647u + 1;
3
- 2147483648 オーバーフロー
2147483648
- 減算 2 - 1;
-2147483648 - 1;
-2147483648L - 1;
1
2147483647 オーバーフロー
-2147483649
* 乗算 2 * 3:
2147483647 * 2;
2147483647u * 2;
6
- 2 オーバーフロー
4294967294
/ 除算 2 / 1:
3 / 2;
3.0 / 2.0;
2
1 整数同士の割り算は整数
1.5
% 剰余 2 % 1;
3 % 2;
0
1

加算、減算、乗算では、計算結果が型の範囲(最大値,最小値)を超えた場合オーバーフローを起こします。オーバーフローを防ぐ場合、計算結果にあった型を指定し、計算をします。
除算では、整数同士の割り算の計算結果は整数となり、0に丸められます(正の場合は切り捨て、負の場合は切り上げ)。小数の計算結果を求める場合、浮動小数点同士で計算をします。

単項演算子

1つのオペランドの前に使用する演算子を単項演算子といいます。

演算子 意味 答え
+ 符号はそのまま +1
+(-1)
1
-1
- 符号を反転 -1
-(-1)
-1
1
! 論理否定 !true
!false
False
True
~ ビットを反転
(1の補数)
~1
~1u
-2
4294967294

比較演算子

2つのオペランドを比較する演算子を比較演算子といいます。

演算子 意味 答え
< より小さい 1 < 2
2 < 1
1 < 1
True
False
False
> より大きい 2 > 1
1 > 2
1 > 1
True
False
False
<= 以下 1 <= 2
2 <= 1
1 <= 1
True
False
True
>= 以上 2 >= 1
1 >= 2
1 >= 1
True
False
True
== 等しい 1 == 2
2 == 1
1 == 1
False
Flase
True
!= 等しくない 1 != 2
2 != 1
1 != 1
True
True
False

論理演算子

論理演算を行い真偽を判定する演算子を論理演算子といいます。

演算子 意味 答え
& 論理積(AND) true & true
true & false
12 & 10
True
False
8
| 論理和(OR) true | true
true | false
12 | 10
True
True
14
^ 排他的論理和(XOR) true ^ true
true ^ false
12 ^ 10
False
True
6
&& 条件論理積(ショートサーキット) true & true
true & false
True
False
|| 条件論理和(ショートサーキット) true | true
true | false
True
True

& 、| 、^ 演算子はbool型、整数型に利用可能です。整数型に対して用いた場合、ビットごとの論理演算となります。
&& 、|| はbool型のみ利用可能です。& 、| と違い、左オペランドの評価で結果が得られる場合に右オペランドは評価しない(ショートサーキット)ため高速になります。

インクリメント演算子、デクリメント演算子

オペランドの値に1加算する演算子をインクリメント演算子、1減算する演算子をデクリメント演算子といいます。

演算子 意味 答え
++ オペランドに1加算される int a = 0;
Console.WriteLine(++a);
Console.WriteLine(++a);
Console.WriteLine(a);
int b = 0;
Console.WriteLine(b++);
Console.WriteLine(b++);
Console.WriteLine(b);

1
2
2

0
1
2
-- オペランドから1減算される int a = 0;
Console.WriteLine(--a);
Console.WriteLine(--a);
Console.WriteLine(a);
int b = 0;
Console.WriteLine(b--);
Console.WriteLine(b--);
Console.WriteLine(b);

-1
-2
-2

0
-1
-2

++演算子をオペランドの手前に書くと、オペランドの値を利用する前に1加算されます。オペランドの後方に書くと、オペランドの値を利用した後に1加算されます。
同様に、--演算子をオペランドの手前に書くと、オペランドの値を利用する前に1減算されます。オペランドの後方に書くと、オペランドの値を利用した後に1減算されます。

シフト演算子

オペランドを指定ビット数だけ左、または右へシフトする演算子をシフト演算子といいます。

演算子 意味 答え
<< 左シフト 15 << 1; 30
>> 右シフト 15 >> 1; 7

右のオペランドで指定された数だけ左のオペランドが左、または右にシフトされます。
左のオペランドは int,uint,long,ulong、右のオペランドは int が指定可能です。
左シフトでは、左オペランドの上位ビットは破棄され、シフトの結果空になる下位ビットには 0 が入ります。
右シフトでは、左オペランドが int または long の場合、算術シフトとなります(シフトの結果空になる上位ビットに符号ビットが設定される)。左オペランドが uint 型または ulong 型の場合、論理シフトとなります(上位ビットには 0 が入る)。

代入演算子

オペランドに値を代入する際用いられる演算子が代入演算子となります。

演算子 意味 答え
= 代入 int a = 1; 1
+= 加算代入 int a = 1;
a += 2;

3
-= 減算代入 int a = 2;
a -= 1;

1
*= 乗算代入 int a = 2;
a *= 3;

6
/= 除算代入 int a = 6;
a /= 3;

2
%= 剰余代入 int a = 3;
a %= 2;

1
&= AND代入 bool b = true;
b &= false;

False
|= OR代入 bool b = true;
b |= false;

true
^= 排他的OR代入 bool b = true;
b ^= false;

True
<<= 左シフト代入 int a = 15;
a <<= 1;

30
>>= 右シフト代入 int a = 15;
a >>= 1;

7
?? Null合体演算子 int? a = null;
int b = a ?? 1;

1

+=演算子の a += 2; は a = a + 2; と同じ意味になります。-=、*=、/=、%=、&=、|=、^=、<<=、>>= も同様です。
??演算子は、左オペランドがnullでない場合は左オペランドを返し、nullの場合は右オペランドを返します。

条件演算子

条件の真偽に応じ、結果が変わる演算子を条件演算子と言います。

演算子 意味 答え
?: 三項条件 true ? 1 : 2;
false ? 1 : 2;
1
2

1番目のオペランドがtrueの場合、2番目のオペランドが結果となります。1番目のオペランドがfalseの場合、3番目のオペランドが結果となります。

型情報演算子

オペランドの型、サイズを扱う演算子として以下があります。

演算子 意味 答え
is データの型を検査する 1 is int
1.0 is int
True
False
as データの型を変換する object obj = "文字列";
string str = obj as string;
Console.WriteLine(str);
object obj = 123;
string str = obj as string;
Console.WriteLine(str);


文字列


null
sizeof 値型のサイズ(バイト単位)を取得する int intSize = sizeof(int);
int doubleSize = sizeof(double);
4
8
typeof 型のTypeを取得する System.Type shortType = typeof(short);
System.Type intType = typeof(int);
System.Type longType = typeof(long);
System.Int16
System.Int32
System.Int64

is演算子は、データが null 以外で、指定した型にキャスト可能な場合にTrueとなります。結果が必ずTrueまたはFalseの場合は、コンパイル時に警告が出力されます。
as演算子は、変換できない場合nullとなります。それに対し、キャストは変換できない場合例外が発生します。
最終更新:2008年12月28日 01:55