C# 演算子

C# には、多くの演算子が用意されています。演算子とは、式で実行する演算を指定する記号のことです。 整数型に対する ==、!=、<、>、<=、>=、binary +、binary -、^、& |、~、++、--、sizeof() などの演算は、通常、列挙体で使用できます。 また、演算子の多くはユーザーがオーバーロードできるため、ユーザー定義型に適用された演算子は、意味が変わります。

次の表では、C# 演算子を優先順位別にグループにまとめます。 同じグループの演算子の優先順位に差はありません。

演算子のカテゴリ

演算子

1 次式

x.y

f(x)

a[x]

x++

x--

new

typeof

checked

unchecked

default(T)

delegate

sizeof

->

単項

+x

-x

!x

~x

++x

--x

(T)x

await

&x

*x

乗法

x * y

x / y

x % y

加法

x + y

x - y

シフト

x << y

x >> y

関係式と型検査

x < y

x > y

x <= y

x >= y

is

as

等価比較

x == y

x != y

論理 AND

x & y

論理 XOR

x ^ y

論理 OR

x | y

条件 AND

x && y

条件 OR

x || y

Null 合体演算子

x ?? y

条件

?:

代入式とラムダ式

x = y

x += y

x -= y

x *= y

x /= y

x %= y

x &= y

x |= y

x ^= y

x <<= y

x >>= y

=>

算術オーバーフロー

算術演算子 (+-*/) を実行すると、結果が数値型の有効な値の範囲を超えることがあります。 詳細については、各演算子に関するセクションを参照してください。概要は、以下のとおりです。

  • 整数の算術オーバーフローでは、OverflowException がスローされるか、または結果の最上位ビットが破棄されます。 0 による整数除算では、常に DivideByZeroException がスローされます。

  • 浮動小数点数の算術オーバーフローまたは 0 による浮動小数点除算では、例外はスローされません。これは、浮動小数点型が IEEE 754 に基づいており、無限大および NaN (Not a Number) を表現できるためです。

  • 小数の算術オーバーフローでは、常に OverflowException がスローされます。 0 による小数除算では、常に DivideByZeroException がスローされます。

整数のオーバーフローが発生したときの対処方法は、実行コンテキスト (checked または unchecked) によって異なります。 checked コンテキストの場合は、OverflowException がスローされます。 unchecked コンテキストの場合は、結果の最上位ビットが破棄され、実行が続行されます。 このように、C# ではオーバーフローを処理するのか、それとも無視するのかをユーザーが選択できます。

算術演算子の場合だけでなく、整数型から整数型へのキャスト (long から int へのキャストなど) でもオーバーフローは発生し、その場合も実行が checked または unchecked のいずれかによって対処が異なります。 ただし、ビット処理演算子とシフト演算子ではオーバーフローは発生しません。

参照

関連項目

オーバーロードされた演算子 (C# プログラミング ガイド)

C# のキーワード

概念

C# プログラミング ガイド

その他の技術情報

C# リファレンス

Visual C#