C# の演算子
更新 : 2008 年 7 月
C# には、多くの演算子が用意されています。演算子とは、式で実行する演算を指定する記号のことです。整数型に対する ==、!=、<、>、<=、>=、binary +、binary -、^、&、|、~、++、--、sizeof() などの演算は、通常、列挙体で使用できます。また、演算子の多くはユーザーがオーバーロードできるため、ユーザー定義型に適用された演算子は、意味が変わります。
次の表では、C# 演算子を優先順位別にグループにまとめます。同じグループの演算子の優先順位に差はありません。
演算子のカテゴリ |
演算子 |
---|---|
1 次式 |
|
単項式 |
|
乗算 |
|
加算 |
|
シフト |
|
関係式と型検査 |
|
等値 |
|
論理 AND |
|
論理 XOR |
|
論理 OR |
|
条件 AND |
|
条件 OR |
|
条件 |
|
代入 |
|
Null 合体演算子 |
|
ラムダ |
算術オーバーフロー
算術演算子 (+、-、*、/) を実行すると、結果が数値型の有効な値の範囲を超えることがあります。詳細については、各演算子に関するセクションを参照してください。概要は、以下のとおりです。
整数の算術オーバーフローでは、OverflowException がスローされるか、または結果の最上位ビットが破棄されます。0 による整数除算では、常に DivideByZeroException がスローされます。
浮動小数点数の算術オーバーフローまたは 0 による浮動小数点除算では、例外はスローされません。これは、浮動小数点型が IEEE 754 に基づいており、無限大および NaN (Not a Number) を表現できるためです。
小数の算術オーバーフローでは、常に OverflowException がスローされます。0 による小数除算では、常に DivideByZeroException がスローされます。
整数のオーバーフローが発生したときの対処方法は、実行コンテキスト (checked または unchecked) によって異なります。checked コンテキストの場合は、OverflowException がスローされます。unchecked コンテキストの場合は、結果の最上位ビットが破棄され、実行が続行されます。このように、C# ではオーバーフローを処理するのか、それとも無視するのかをユーザーが選択できます。
算術演算子の場合だけでなく、整数型から整数型へのキャスト (long から int へのキャストなど) でもオーバーフローは発生し、その場合も実行が checked または unchecked のいずれかによって対処が異なります。ただし、ビット処理演算子とシフト演算子ではオーバーフローは発生しません。
参照
処理手順
概念
参照
オーバーロードされた演算子 (C# プログラミング ガイド)
その他の技術情報
変更履歴
日付 |
履歴 |
理由 |
---|---|---|
2008 年 7 月 |
顧客の提案によって、?? 演算子を代入カテゴリから移動 |
コンテンツ バグ修正 |