C#演算子完全ガイド:C#における演算子の包括的解説
C#演算子
C#のあらゆる演算子カテゴリを探求し、コードで効果的に適用する方法を学びます。
演算子は、1つ以上のオペランド(変数、定数、式)に対してアクションを実行する記号です。C#では、演算子は実行する操作の種類によってグループ化されます(算術、論理、ビット演算など)。
1. 基本代入演算子
代入演算子(=)は、値を変数に格納します。
double x; x = 50.05;
例1:代入演算子の使用
using System; namespace OperatorDemo { class AssignmentOperator { public static void Main(string[] args) { int firstNumber, secondNumber; firstNumber = 10; Console.WriteLine("First Number = {0}", firstNumber); secondNumber = firstNumber; Console.WriteLine("Second Number = {0}", secondNumber); } } }
出力:
First Number = 10 Second Number = 10
2. 算術演算子
算術演算子は数学的計算を実行します。
int x = 5; int y = 10; int z = x + y; // z = 15
| 演算子 | 名称 | 例 |
|---|---|---|
| + | 加算 | 6 + 3 = 9 |
| - | 減算 | 10 - 6 = 4 |
| * | 乗算 | 4 * 2 = 8 |
| / | 除算 | 10 / 5 = 2 |
| % | 剰余(余り) | 16 % 3 = 1 |
例2:算術演算
using System; namespace OperatorDemo { class ArithmeticOperator { public static void Main(string[] args) { double firstNumber = 14.40, secondNumber = 4.60, result; int num1 = 26, num2 = 4, rem; result = firstNumber + secondNumber; Console.WriteLine("{0} + {1} = {2}", firstNumber, secondNumber, result); result = firstNumber - secondNumber; Console.WriteLine("{0} - {1} = {2}", firstNumber, secondNumber, result); result = firstNumber * secondNumber; Console.WriteLine("{0} * {1} = {2}", firstNumber, secondNumber, result); result = firstNumber / secondNumber; Console.WriteLine("{0} / {1} = {2}", firstNumber, secondNumber, result); rem = num1 % num2; Console.WriteLine("{0} % {1} = {2}", num1, num2, rem); } } }
出力:
14.4 + 4.6 = 19 14.4 - 4.6 = 9.8 14.4 * 4.6 = 66.24 14.4 / 4.6 = 3.1304347826087 26 % 4 = 2
3. 関係演算子
これらの演算子は2つのオペランドを比較し、ブール結果を返します。
| 演算子 | 名称 | 例 |
|---|---|---|
| == | 等しい | 6 == 4 → false |
| > | より大きい | 3 > -1 → true |
| < | より小さい | 5 < 3 → false |
| >= | 以上 | 4 >= 4 → true |
| <= | 以下 | 5 <= 3 → false |
| != | 等しくない | 10 != 2 → true |
例3:関係チェック
using System; namespace OperatorDemo { class RelationalOperator { public static void Main(string[] args) { bool result; int firstNumber = 10, secondNumber = 20; result = (firstNumber==secondNumber); Console.WriteLine("{0} == {1} returns {2}",firstNumber, secondNumber, result); result = (firstNumber > secondNumber); Console.WriteLine("{0} > {1} returns {2}",firstNumber, secondNumber, result); result = (firstNumber < secondNumber); Console.WriteLine("{0} < {1} returns {2}",firstNumber, secondNumber, result); result = (firstNumber >= secondNumber); Console.WriteLine("{0} >= {1} returns {2}",firstNumber, secondNumber, result); result = (firstNumber <= secondNumber); Console.WriteLine("{0} <= {1} returns {2}",firstNumber, secondNumber, result); result = (firstNumber != secondNumber); Console.WriteLine("{0} != {1} returns {2}",firstNumber, secondNumber, result); } } }
出力:
10 == 20 returns False 10 > 20 returns False 10 < 20 returns True 10 >= 20 returns False 10 <= 20 returns True 10 != 20 returns True
4. 論理演算子
論理演算子はブール式を評価します。
| オペランド1 | オペランド2 | OR (||) | AND (&&) |
|---|---|---|---|
| true | true | true | true |
| true | false | true | false |
| false | true | true | false |
| false | false | false | false |
- いずれかのオペランドが
trueなら、OR演算子はtrueを返す。 - 両オペランドが
trueの時のみ、ANDはtrueを返す。
例4:論理演算子
using System; namespace OperatorDemo { class LogicalOperator { public static void Main(string[] args) { bool result; int firstNumber = 10, secondNumber = 20; result = (firstNumber == secondNumber) || (firstNumber > 5); Console.WriteLine(result); result = (firstNumber == secondNumber) && (firstNumber > 5); Console.WriteLine(result); } } }
出力:
True False
5. 単項演算子
単項演算子は単一オペランドに作用します。
| 演算子 | 名称 | 説明 |
|---|---|---|
| + | 単項プラス | 符号を変更しない |
| - | 単項マイナス | 符号を反転 |
| ++ | インクリメント | 1増やす |
| -- | デクリメント | 1減らす |
| ! | 論理NOT | ブール値を反転 |
例5:単項演算子
using System; namespace OperatorDemo { class UnaryOperator { public static void Main(string[] args) { int number = 10, result; bool flag = true; result = +number; Console.WriteLine("+number = " + result); result = -number; Console.WriteLine("-number = " + result); result = ++number; Console.WriteLine("++number = " + result); result = --number; Console.WriteLine("--number = " + result); Console.WriteLine("!flag = " + (!flag)); } } }
出力:
+number = 10 -number = -10 ++number = 11 --number = 10 !flag = False
例6:プレフィックス vs ポストフィックス インクリメント
using System; namespace OperatorDemo { class UnaryOperator { public static void Main(string[] args) { int number = 10; Console.WriteLine(number++); // 10 Console.WriteLine(number); // 11 Console.WriteLine(++number); // 12 Console.WriteLine(number); // 12 } } }
出力:
10 11 12 12
6. 三項演算子
三項演算子(? :)はif-else文を1行に凝縮します。
variable = Condition ? Expression1 : Expression2;
ConditionがtrueならExpression1、そうでなければExpression2が評価されます。
例7:三項演算子の使用
using System; namespace OperatorDemo { class TernaryOperator { public static void Main(string[] args) { int number = 10; string result = (number % 2 == 0) ? "Even Number" : "Odd Number"; Console.WriteLine("{0} is {1}", number, result); } } }
出力:
10 is Even Number
C#三項演算子の詳細をご覧ください。
7. ビット演算 & ビットシフト演算子
これらの演算子は整数型の個々のビットを操作します。
| 演算子 | 名称 |
|---|---|
| ~ | ビット反転 |
| & | AND |
| | | OR |
| ^ | XOR |
| << | 左シフト |
| >> | 右シフト |
例8:ビット演算
using System; namespace OperatorDemo { class BitOperator { public static void Main(string[] args) { int firstNumber = 10, secondNumber = 20, result; result = ~firstNumber; Console.WriteLine("~{0} = {1}", firstNumber, result); result = firstNumber & secondNumber; Console.WriteLine("{0} & {1} = {2}", firstNumber, secondNumber, result); result = firstNumber | secondNumber; Console.WriteLine("{0} | {1} = {2}", firstNumber, secondNumber, result); result = firstNumber ^ secondNumber; Console.WriteLine("{0} ^ {1} = {2}", firstNumber, secondNumber, result); result = firstNumber << 2; Console.WriteLine("{0} << 2 = {1}", firstNumber, result); result = firstNumber >> 2; Console.WriteLine("{0} >> 2 = {1}", firstNumber, result); } } }
出力:
~10 = -11 10 & 20 = 0 10 | 20 = 30 10 ^ 20 = 30 10 << 2 = 40 10 >> 2 = 2
詳細はC#ビット演算とビットシフト演算子ガイドを参照。
8. 複合代入演算子
これらの演算子は算術演算と代入を組み合わせます。
| 演算子 | 名称 | 例 | 等価 |
|---|---|---|---|
| += | 加算代入 | x += 5 | x = x + 5 |
| -= | 減算代入 | x -= 5 | x = x - 5 |
| *= | 乗算代入 | x *= 5 | x = x * 5 |
| /= | 除算代入 | x /= 5 | x = x / 5 |
| %= | 剰余代入 | x %= 5 | x = x % 5 |
| &= | ビットAND代入 | x &= 5 | x = x & 5 |
| |= | ビットOR代入 | x |= 5 | x = x | 5 |
| ^= | ビットXOR代入 | x ^= 5 | x = x ^ 5 |
| <<= | 左シフト代入 | x <<= 5 | x = x << 5 |
| >>= | 右シフト代入 | x >>= 5 | x = x >> 5 |
| => | ラムダ演算子 | x => x * x | xの二乗を返す |
例9:複合代入の使用
using System; namespace OperatorDemo { class CompoundOperator { public static void Main(string[] args) { int number = 10; number += 5; Console.WriteLine(number); number -= 3; Console.WriteLine(number); number *= 2; Console.WriteLine(number); number /= 3; Console.WriteLine(number); number %= 3; Console.WriteLine(number); number &= 10; Console.WriteLine(number); number |= 14; Console.WriteLine(number); number ^= 12; Console.WriteLine(number); number <<= 2; Console.WriteLine(number); number >>= 3; Console.WriteLine(number); } } }
出力:
15 12 24 8 2 2 14 2 8 1
ラムダ式については後続チュートリアルで詳述します。
C言語
- C言語演算子完全ガイド:算術・関係・論理・ビット演算子
- C++演算子を徹底解説:種類、例、サンプルプログラム付き
- C++演算子オーバーロード:コード例付き実践ガイド
- C言語演算子完全ガイド:種類、機能、実例付き解説
- C++演算子完全ガイド:種類、使い方、ベストプラクティス
- Verilog演算子:合成に必須の算術・制御演算子
- Python 演算子完全マスター: 包括的ガイド
- Python演算子オーバーロード完全ガイド:__add__、__lt__など特殊メソッドでOOP設計を強化
- Java演算子をマスター:種類、構文、実践例
- Java instanceof演算子完全ガイド:基本から継承・インターフェースまで
- Java演算子完全ガイド:算術/関係/ビット/論理/代入/三項/instanceof