この記事では、当社の新人エンジニア研修の参考にC#を解説します。
なぜ、演算子が重要なのか、その理由
この記事では、弊社の新人エンジニア研修の参考にC#を解説します。
前回は変数とデータ型について解説しました。今回は演算子について説明します。コンピュータの語源である「一緒に計算してくれる人」に由来するように、演算はプログラムの本質的な役割といえるでしょう。
C#には様々な演算子がありますが、今回は以下の2種類を重点的に解説します。
- 算術演算子
- キャスト演算子
その他の演算子については、次回の条件分岐で解説します。
1. 算術演算子
四則演算(+-×÷)などを行う演算子を算術演算子といいます。C#で足し算を行う例を見てみましょう。
using System;
class Example01
{
static void Main(string[] args)
{
Console.WriteLine(5 + 2);
}
}
結果:7
と表示されます。
ここで使用した「+
」記号は演算子(operator)と呼ばれます。一方、5
や 2
はオペランド(operand)と呼ばれます。また、「5 + 2
」は式(expression)といい、文末に「;
」を付けることでこれが文(statement)となります。
C#の算術演算子は以下の通りです。
算術演算子 | 演算内容 | 式の例 | 結果(値) |
---|---|---|---|
+ | 足し算 | 5 + 2 | 7 |
- | 引き算 | 5 - 2 | 3 |
* | 掛け算 | 5 * 2 | 10 |
/ | 割り算 | 5 / 2 | 2 (整数同士の場合) |
% | 剰余(余り) | 5 % 2 | 1 |
重要な注意点
5 / 2
の結果が2.5
ではなく2
になるのは、整数型同士の演算結果も整数型になるためです。- 優先順位: 掛け算、割り算、剰余は、足し算や引き算より優先して計算されます。
練習問題
① 以下のコードの実行結果は何ですか?
Console.WriteLine(1 + 5 % 2);
② 括弧を使って計算の優先順位を変えてみましょう。以下のコードの結果は何ですか?
Console.WriteLine((1 + 5) % 2);
2. 変数を含む式
式には変数を含めることもできます。次のプログラムでは、値をインクリメント(1増加)しながら順次出力します。
using System;
class Example02
{
static void Main(string[] args)
{
int i = 1;
int j = i + 1;
Console.WriteLine(j); // 2
j = j + 1;
Console.WriteLine(j); // 3
Console.WriteLine(j += 1); // 4(複合代入演算子の例)
Console.WriteLine(++j); // 5(前置インクリメント)
Console.WriteLine(j++); // 5(後置インクリメント)
Console.WriteLine(j); // 6
}
}
重要なポイント
- 複合代入演算子
j += 1
はj = j + 1
の短縮形です。他の演算も以下のように短縮できます。通常の書き方
通常の書き方 | 複合代入演算子 | 結果 (number = 2 の場合) |
---|---|---|
number = number - 1; | number -= 1; | 1 |
number = number * 3; | number *= 3; | 6 |
3. 型と代入の制限
変数の型が一致しない場合の代入について説明します。
例: 以下のコードは、int
型を double
型に代入する場合です。
double d = 1;
Console.WriteLine(d); // 1.0
これはエラーになりません。C#では、「大きな型」への変換は暗黙的に行われます。これを暗黙的な型変換といいます。
一方、「小さな型」に代入する場合はエラーになります。
int i = (int)3.14;
Console.WriteLine(i); // 3
このように、明示的にキャスト(型変換)する必要があります。
4. 型変換の注意点
異なる型の演算結果は、最も大きい型に統一されます。
int i = 1;
double d = 3.1;
Console.WriteLine(i + d); // 4.1
また、整数同士の割り算では結果が整数になります。もし小数点以下を表示したい場合は、明示的にキャストを行います。
Console.WriteLine(5 / (double)2); // 2.5
5. ArithmeticException(算術例外)
以下のようなコードでは、0で割ると例外が発生します。
try
{
Console.WriteLine(5 / 0);
}
catch (DivideByZeroException e)
{
Console.WriteLine("例外発生: " + e.Message);
}
6. 文字列の結合における「+」演算子
文字列を結合するには +
を使用します。
string str1 = "Hello";
string str2 = " World";
Console.WriteLine(str1 + str2); // Hello World
文字列と数値を混在させる場合、以下のような挙動になります。
Console.WriteLine("1 + 2 = " + 1 + 2); // 1 + 2 = 12
Console.WriteLine(1 + 2 + " は 1 + 2 の答えです"); // 3 は 1 + 2 の答えです
これは、算術演算子が左結合であるためです。最初に文字列が出てきた場合、以降はすべて文字列として扱われます。
これらの基礎をしっかり押さえておくことで、C#プログラミングの理解が深まります。
まとめができたら、アウトプットとして演習問題にチャレンジしましょう。