C# intとは?型の範囲・初期値・変換・使い方を初心者向けに徹底解説
はじめに
C#でプログラミングを始めると、ほぼ必ず登場するのがintです。intは整数を扱うための基本的なデータ型で、年齢、点数、個数、回数、配列のインデックス、ループのカウンターなど、さまざまな場面で使われます。
たとえば、次のようなコードで使います。
C#int age = 20;
int score = 85;
int count = 10;
一見すると単純な型に見えますが、intには扱える値の範囲、初期値、他の型との違い、文字列との変換、オーバーフローなど、初心者がつまずきやすいポイントがいくつもあります。
この記事では、C#のintについて、基本から実践的な使い方まで初心者向けにわかりやすく解説します。
1. C#のintとは?整数を扱う基本のデータ型
1-1. intは整数を格納するための型
C#のintは、整数を格納するためのデータ型です。
整数とは、小数点を含まない数値のことです。
C#int number = 100;
int count = 5;
int temperature = -3;
intには、正の数だけでなく、0や負の数も代入できます。
C#int positive = 10;
int zero = 0;
int negative = -10;
一方で、1.5や3.14のような小数はintにはそのまま代入できません。
C#int value = 3.14; // エラー
小数を扱いたい場合は、double、float、decimalなど別の数値型を使います。
1-2. intで扱える値と扱えない値
intで扱えるのは、一定範囲内の整数です。
たとえば、次のような値はintで扱えます。
C#int a = 123;
int b = -456;
int c = 0;
しかし、次のような値はintでは扱えません。
C#int a = 3.14; // 小数なのでエラー
int b = 3000000000; // intの範囲を超えるためエラー
int c = "100"; // 文字列なのでエラー
"100"は見た目は数字ですが、ダブルクォーテーションで囲まれているため文字列です。intとして扱うには変換が必要です。
C#string text = "100";
int number = int.Parse(text);
1-3. intはSystem.Int32の別名
C#のintは、実はSystem.Int32の別名です。
次の2つは同じ意味です。
C#int a = 10;
System.Int32 b = 10;
また、次のように書くこともできます。
C#Int32 number = 100;
ただし、通常のC#コードではintを使うのが一般的です。intのほうが短く読みやすいため、多くのコードで使われています。
C#int count = 5;
一方で、.NETの型として明示したい場合や、ドキュメント・API仕様などではSystem.Int32と表記されることがあります。
1-4. intがC#でよく使われる理由
intがC#でよく使われる理由は、扱いやすく、十分な範囲を持ち、処理効率も良いからです。
たとえば、次のような用途ではintがよく使われます。
C#int age = 25;
int score = 90;
int quantity = 3;
int index = 0;
年齢、点数、個数、回数などは、多くの場合intの範囲内に収まります。そのため、特別な理由がなければ整数にはまずintを使う、という考え方で問題ありません。
ただし、非常に大きな数値を扱う場合はlong、小数を扱う場合はdoubleやdecimalなど、用途に応じて別の型を選ぶ必要があります。
2. C# int型の範囲とサイズ
2-1. intの最小値・最大値
C#のintで扱える範囲は、次のとおりです。
C#-2,147,483,648 ~ 2,147,483,647
つまり、intの最小値は-2147483648、最大値は2147483647です。
C#int min = -2147483648;
int max = 2147483647;
この範囲を超える数値は、intでは正しく扱えません。
C#int value = 2147483648; // エラー
2147483648はintの最大値を超えているため、int変数に代入できません。
2-2. int.MinValueとint.MaxValueの使い方
intの最小値と最大値は、int.MinValueとint.MaxValueで取得できます。
C#Console.WriteLine(int.MinValue);
Console.WriteLine(int.MaxValue);
実行結果は次のようになります。
C#-2147483648
2147483647
数値を直接書くよりも、int.MinValueやint.MaxValueを使ったほうが意味が明確になります。
C#int min = int.MinValue;
int max = int.MaxValue;
範囲チェックにもよく使われます。
C#long value = 3000000000;
if (value < int.MinValue || value > int.MaxValue)
{
Console.WriteLine("intの範囲外です");
}
else
{
int number = (int)value;
Console.WriteLine(number);
}
このように、他の数値型からintに変換する前に、範囲内かどうかを確認できます。
2-3. intは何ビット?メモリサイズを解説
C#のintは32ビットの符号付き整数です。
32ビットとは、データを32個のビットで表すという意味です。1バイトは8ビットなので、intのサイズは4バイトです。
C#Console.WriteLine(sizeof(int));
実行結果は次のようになります。
C#4
intは4バイトで、正の数、負の数、0を扱えます。
「符号付き整数」とは、プラスとマイナスの両方を扱える整数型という意味です。そのため、intでは-1や-100のような負の値も扱えます。
2-4. 範囲外の値を扱うとどうなる?
intの範囲外の値を扱おうとすると、状況によってエラーになったり、意図しない値になったりします。
たとえば、明らかに範囲外の数値を代入するとコンパイルエラーになります。
C#int value = 3000000000; // コンパイルエラー
また、計算結果がintの範囲を超えることもあります。
C#int max = int.MaxValue;
int result = max + 1;
Console.WriteLine(result);
通常の設定では、オーバーフローにより意図しない値になる場合があります。安全に検出したい場合はcheckedを使います。
C#checked
{
int max = int.MaxValue;
int result = max + 1; // OverflowException
}
checkedを使うと、範囲を超えたときにOverflowExceptionが発生します。
逆に、オーバーフローを許可する場合はuncheckedを使います。
C#unchecked
{
int max = int.MaxValue;
int result = max + 1;
Console.WriteLine(result);
}
初心者のうちは、intの最大値を超える可能性がある計算ではlongを使うことも検討するとよいでしょう。
3. C# int型の初期値と宣言方法
3-1. int変数の基本的な宣言方法
int変数は、次のように宣言します。
C#int number;
これは「numberという名前のint型変数を用意する」という意味です。
ただし、ローカル変数の場合、値を代入する前に使うことはできません。
C#int number;
Console.WriteLine(number); // エラー
ローカル変数は、必ず値を代入してから使う必要があります。
C#int number;
number = 10;
Console.WriteLine(number);
また、宣言と代入を同時に書くこともできます。
C#int number = 10;
この書き方がもっともよく使われます。
3-2. intに初期値を代入する方法
intに初期値を代入するには、変数宣言時に値を指定します。
C#int age = 20;
int score = 100;
int count = 0;
後から値を変更することもできます。
C#int count = 0;
count = 1;
count = 2;
Console.WriteLine(count);
実行結果は次のようになります。
C#2
intは変数なので、代入によって値を変更できます。
計算結果を代入することもできます。
C#int price = 100;
int quantity = 3;
int total = price * quantity;
Console.WriteLine(total);
実行結果は次のようになります。
C#300
3-3. フィールド・配列・ローカル変数の初期値の違い
intの初期値については、フィールド、配列、ローカル変数で扱いが異なります。
クラスのフィールドとして宣言したintは、自動的に0で初期化されます。
C#class Sample
{
int count;
public void Show()
{
Console.WriteLine(count);
}
}
この場合、countには初期値として0が入ります。
配列の要素も、自動的に0で初期化されます。
C#int[] numbers = new int[3];
Console.WriteLine(numbers[0]);
Console.WriteLine(numbers[1]);
Console.WriteLine(numbers[2]);
実行結果は次のようになります。
C#0
0
0
一方、メソッド内で宣言したローカル変数は、自動的に使える状態にはなりません。
C#void Test()
{
int number;
Console.WriteLine(number); // エラー
}
ローカル変数は、使用前に明示的な代入が必要です。
C#void Test()
{
int number = 0;
Console.WriteLine(number);
}
つまり、intの初期値は基本的には0ですが、ローカル変数では代入前に使えない点に注意しましょう。
3-4. varでint型になるケース
C#では、varを使って変数を宣言できます。
C#var number = 10;
この場合、numberの型はintになります。
varは型を省略しているだけで、型がなくなるわけではありません。右辺の値からコンパイラが型を推論します。
C#var a = 10; // int
var b = 10L; // long
var c = 10.0; // double
var d = 10m; // decimal
var e = 10f; // float
整数リテラルをそのまま書いた場合、多くのケースでintになります。
C#var count = 5; // int
ただし、varは型が見えにくくなることもあるため、初心者のうちはint count = 5;のように明示的に書くと理解しやすいです。
4. C# int型の基本的な使い方
4-1. 四則演算でintを使う
intは四則演算に使えます。
C#int a = 10;
int b = 3;
Console.WriteLine(a + b);
Console.WriteLine(a - b);
Console.WriteLine(a * b);
Console.WriteLine(a / b);
Console.WriteLine(a % b);
実行結果は次のようになります。
C#13
7
30
3
1
+は足し算、-は引き算、*は掛け算、/は割り算、%は余りを求める演算子です。
注意点として、int同士の割り算では小数部分が切り捨てられます。
C#int result = 10 / 3;
Console.WriteLine(result);
実行結果は次のようになります。
C#3
3.333...にはならず、整数の3になります。
小数の結果が必要な場合は、doubleなどを使います。
C#double result = 10.0 / 3;
Console.WriteLine(result);
4-2. 比較演算でintを使う
intは比較演算にもよく使われます。
C#int score = 80;
if (score >= 60)
{
Console.WriteLine("合格です");
}
else
{
Console.WriteLine("不合格です");
}
比較演算子には、次のようなものがあります。
C#int a = 10;
int b = 20;
Console.WriteLine(a == b); // 等しい
Console.WriteLine(a != b); // 等しくない
Console.WriteLine(a < b); // より小さい
Console.WriteLine(a <= b); // 以下
Console.WriteLine(a > b); // より大きい
Console.WriteLine(a >= b); // 以上
実行結果は、条件を満たす場合はTrue、満たさない場合はFalseになります。
C#False
True
True
True
False
False
点数、年齢、数量、残高などの条件分岐でintはよく使われます。
4-3. for文やwhile文のカウンターに使う
intは、繰り返し処理のカウンターとして非常によく使われます。
C#for (int i = 0; i < 5; i++)
{
Console.WriteLine(i);
}
実行結果は次のようになります。
C#0
1
2
3
4
for文では、カウンター変数としてint iを使うのが一般的です。
while文でも使えます。
C#int count = 0;
while (count < 5)
{
Console.WriteLine(count);
count++;
}
count++は、countの値を1増やす書き方です。
C#count++;
これは次のコードと同じ意味です。
C#count = count + 1;
4-4. 配列のインデックスや件数管理に使う
配列のインデックスにもintがよく使われます。
C#int[] scores = { 80, 90, 70 };
Console.WriteLine(scores[0]);
Console.WriteLine(scores[1]);
Console.WriteLine(scores[2]);
配列のインデックスは0から始まります。
C#80
90
70
配列の要素数を使ってループ処理する場合も、intが使われます。
C#int[] scores = { 80, 90, 70 };
for (int i = 0; i < scores.Length; i++)
{
Console.WriteLine(scores[i]);
}
scores.Lengthは配列の要素数を表します。
件数管理にもintは便利です。
C#int itemCount = 0;
itemCount++;
itemCount++;
itemCount++;
Console.WriteLine(itemCount);
実行結果は次のようになります。
C#3
このように、数を数える処理ではintがよく使われます。
5. C# int型と他の数値型の違い
5-1. int・long・shortの違い
int、long、shortはいずれも整数を扱う型ですが、扱える範囲とサイズが異なります。
C#short smallNumber = 100;
int normalNumber = 100000;
long largeNumber = 10000000000L;
shortは16ビット、intは32ビット、longは64ビットです。
shortは扱える範囲が小さく、longは非常に大きな整数を扱えます。
一般的な整数にはintを使い、intの範囲を超える可能性がある場合はlongを使うとよいでしょう。
C#int age = 30;
long population = 125000000L;
longの数値リテラルには、末尾にLを付けることがあります。
C#long value = 10000000000L;
5-2. int・double・float・decimalの違い
intは整数を扱う型です。一方、double、float、decimalは小数を扱う型です。
C#int a = 10;
double b = 10.5;
float c = 10.5f;
decimal d = 10.5m;
doubleは一般的な小数計算でよく使われます。
C#double average = 85.5;
floatはdoubleより精度が低い小数型で、数値の末尾にfを付けます。
C#float rate = 1.5f;
decimalは、金額計算など誤差を避けたい場面でよく使われます。
C#decimal price = 1200.50m;
intは小数を扱えないため、平均値や割合、金額の小数部分を扱う場合は別の型を選ぶ必要があります。
5-3. uintとの違い
uintは、符号なし32ビット整数です。
intは負の数を扱えますが、uintは負の数を扱えません。
C#int a = -10;
uint b = 10;
次のように、uintに負の数を代入することはできません。
C#uint value = -1; // エラー
uintの範囲は、0から4294967295までです。
intより大きな正の数を扱えますが、負の値が使えないため、通常の業務アプリケーションではintのほうがよく使われます。
uintは、ビット演算や特定のAPI、負の値が絶対に存在しないことを明示したい場面などで使われることがあります。
5-4. 用途別にどの数値型を選ぶべきか
初心者が数値型を選ぶときは、次のように考えるとわかりやすいです。
通常の整数を扱うなら、まずintを使います。
C#int count = 10;
int age = 25;
int score = 90;
intの範囲を超える大きな整数を扱うなら、longを使います。
C#long largeNumber = 5000000000L;
小数を扱うなら、doubleを使います。
C#double average = 72.5;
金額のように正確な小数計算が必要なら、decimalを使います。
C#decimal price = 1980.50m;
非常に小さい整数型が必要な特殊な場面では、shortやbyteを使うこともありますが、初心者のうちは頻繁には使いません。
迷った場合は、整数ならint、大きな整数ならlong、小数ならdouble、金額ならdecimalと覚えておくとよいでしょう。
6. C# int型の変換方法
6-1. intからstringへ変換する方法
intをstringに変換するには、ToStringを使います。
C#int number = 100;
string text = number.ToString();
Console.WriteLine(text);
実行結果は次のようになります。
C#100
Console.WriteLineではintをそのまま表示できますが、文字列として結合したい場合にはToStringを使うことがあります。
C#int age = 20;
string message = "年齢は" + age.ToString() + "歳です";
Console.WriteLine(message);
ただし、文字列補間を使うとより簡単に書けます。
C#int age = 20;
string message = $"年齢は{age}歳です";
Console.WriteLine(message);
実行結果は次のようになります。
C#年齢は20歳です
6-2. stringからintへ変換する方法
stringからintへ変換するには、int.Parseを使います。
C#string text = "123";
int number = int.Parse(text);
Console.WriteLine(number);
実行結果は次のようになります。
C#123
ただし、変換できない文字列を渡すとエラーになります。
C#string text = "abc";
int number = int.Parse(text); // FormatException
"abc"は整数として解釈できないため、FormatExceptionが発生します。
ユーザー入力など、正しい数値が入るとは限らない場合は、int.Parseよりもint.TryParseを使うほうが安全です。
6-3. ParseとTryParseの違い
int.Parseは、文字列をintに変換します。ただし、変換できない場合は例外が発生します。
C#string text = "100";
int number = int.Parse(text);
一方、int.TryParseは、変換に成功したかどうかをtrueまたはfalseで返します。
C#string text = "100";
if (int.TryParse(text, out int number))
{
Console.WriteLine($"変換成功: {number}");
}
else
{
Console.WriteLine("変換失敗");
}
変換できない文字列でも、例外は発生しません。
C#string text = "abc";
if (int.TryParse(text, out int number))
{
Console.WriteLine($"変換成功: {number}");
}
else
{
Console.WriteLine("変換失敗");
}
実行結果は次のようになります。
C#変換失敗
ユーザー入力、CSVファイル、外部APIなど、値が正しいとは限らない場面ではTryParseを使うのがおすすめです。
6-4. Convert.ToInt32の使い方
Convert.ToInt32を使って、値をintに変換することもできます。
C#string text = "123";
int number = Convert.ToInt32(text);
Console.WriteLine(number);
実行結果は次のようになります。
C#123
Convert.ToInt32は、文字列だけでなく、doubleやboolなどの値にも使えます。
C#double d = 10.5;
int number = Convert.ToInt32(d);
Console.WriteLine(number);
ただし、Convert.ToInt32も変換できない文字列では例外が発生します。
C#string text = "abc";
int number = Convert.ToInt32(text); // FormatException
ユーザー入力を変換する場合は、基本的にはint.TryParseを使うほうが安全です。
C#string input = Console.ReadLine();
if (int.TryParse(input, out int number))
{
Console.WriteLine(number);
}
else
{
Console.WriteLine("数値を入力してください");
}
6-5. doubleやdecimalからintへ変換する方法
doubleやdecimalなどの小数型からintへ変換するには、明示的なキャストを使います。
C#double value = 12.9;
int number = (int)value;
Console.WriteLine(number);
実行結果は次のようになります。
C#12
キャストでintに変換すると、小数部分は切り捨てられます。
C#double a = 12.9;
double b = 12.1;
double c = -12.9;
Console.WriteLine((int)a);
Console.WriteLine((int)b);
Console.WriteLine((int)c);
実行結果は次のようになります。
C#12
12
-12
小数を四捨五入したい場合は、Math.Roundを使います。
C#double value = 12.9;
int number = (int)Math.Round(value);
Console.WriteLine(number);
Convert.ToInt32を使う方法もあります。
C#double value = 12.9;
int number = Convert.ToInt32(value);
Console.WriteLine(number);
ただし、Convert.ToInt32は単純な切り捨てではなく、丸め処理を行います。小数部分を切り捨てたい場合は、明示的なキャストを使うとよいでしょう。
7. C# int型でよくあるエラーと注意点
7-1. 入力文字列の形式が正しくないエラー
stringからintに変換するときによくあるのが、入力文字列の形式が正しくないエラーです。
C#string text = "abc";
int number = int.Parse(text);
このコードでは、"abc"を整数に変換できないため、FormatExceptionが発生します。
空文字でも同じです。
C#string text = "";
int number = int.Parse(text); // FormatException
ユーザー入力では、数値以外が入力される可能性があります。そのため、int.Parseよりもint.TryParseを使うと安全です。
C#Console.WriteLine("数値を入力してください");
string input = Console.ReadLine();
if (int.TryParse(input, out int number))
{
Console.WriteLine($"入力された数値は{number}です");
}
else
{
Console.WriteLine("正しい整数を入力してください");
}
このように書けば、数値以外が入力されてもプログラムが停止しにくくなります。
7-2. オーバーフローが発生するケース
intの範囲を超える計算を行うと、オーバーフローが発生します。
C#int max = int.MaxValue;
int result = max + 1;
int.MaxValueは2147483647です。これに1を足すと、intの範囲を超えます。
オーバーフローを検出したい場合は、checkedを使います。
C#try
{
checked
{
int max = int.MaxValue;
int result = max + 1;
Console.WriteLine(result);
}
}
catch (OverflowException)
{
Console.WriteLine("オーバーフローが発生しました");
}
大きな数値を扱う可能性がある場合は、最初からlongを使う方法もあります。
C#long max = int.MaxValue;
long result = max + 1;
Console.WriteLine(result);
実行結果は次のようになります。
C#2147483648
7-3. 小数をintに変換したときの切り捨て
小数をintにキャストすると、小数部分は切り捨てられます。
C#double value = 9.99;
int number = (int)value;
Console.WriteLine(number);
実行結果は次のようになります。
C#9
これは四捨五入ではありません。
C#double value = 9.99;
int truncated = (int)value;
int rounded = (int)Math.Round(value);
Console.WriteLine(truncated);
Console.WriteLine(rounded);
実行結果は次のようになります。
C#9
10
平均点や料金計算などで小数を扱う場合、切り捨てでよいのか、四捨五入すべきなのかを意識する必要があります。
7-4. nullをintに代入できない理由
通常のintにはnullを代入できません。
C#int number = null; // エラー
intは値型です。値型は、基本的に必ず何らかの値を持ちます。
intの場合、値として持てるのは整数です。nullは「値が存在しない」ことを表すため、通常のintには代入できません。
たとえば、次のように0を代入することはできます。
C#int number = 0;
しかし、0とnullは意味が異なります。
0は数値としてのゼロです。nullは値がない状態です。
「未入力」「未設定」「値なし」を表したい場合は、通常のintではなくint?を使います。
7-5. int?を使ってnullを扱う方法
int?を使うと、整数またはnullを扱えます。
C#int? number = null;
後から整数を代入することもできます。
C#number = 100;
int?は、Nullable<int>の省略形です。
C#Nullable<int> number = null;
int?の値を使うときは、nullかどうかを確認する必要があります。
C#int? age = null;
if (age.HasValue)
{
Console.WriteLine(age.Value);
}
else
{
Console.WriteLine("年齢は未設定です");
}
よりシンプルに書くなら、??演算子を使えます。
C#int? age = null;
int displayAge = age ?? 0;
Console.WriteLine(displayAge);
このコードでは、ageがnullの場合に0を使います。
ユーザー入力が未入力の場合や、データベースの値がNULLになる可能性がある場合に、int?はよく使われます。
8. C# int型の実践サンプルコード
8-1. 年齢や点数をintで管理する例
年齢や点数のような整数データは、intで管理できます。
C#int age = 18;
int score = 75;
Console.WriteLine($"年齢: {age}");
Console.WriteLine($"点数: {score}");
条件分岐と組み合わせることもできます。
C#int age = 18;
if (age >= 20)
{
Console.WriteLine("成人です");
}
else
{
Console.WriteLine("未成年です");
}
点数によって合否を判定する例です。
C#int score = 75;
if (score >= 60)
{
Console.WriteLine("合格です");
}
else
{
Console.WriteLine("不合格です");
}
このように、intは条件判定にもよく使われます。
8-2. ユーザー入力をintに変換する例
ユーザーが入力した値は、通常stringとして受け取られます。
C#Console.WriteLine("年齢を入力してください");
string input = Console.ReadLine();
このままではintとして計算や比較に使えません。int.TryParseで変換します。
C#Console.WriteLine("年齢を入力してください");
string input = Console.ReadLine();
if (int.TryParse(input, out int age))
{
Console.WriteLine($"あなたの年齢は{age}歳です");
}
else
{
Console.WriteLine("整数で入力してください");
}
TryParseを使えば、数値以外が入力されても安全に処理できます。
C#Console.WriteLine("点数を入力してください");
string input = Console.ReadLine();
if (int.TryParse(input, out int score))
{
if (score >= 60)
{
Console.WriteLine("合格です");
}
else
{
Console.WriteLine("不合格です");
}
}
else
{
Console.WriteLine("点数は整数で入力してください");
}
8-3. 範囲チェックを行う例
intで値を扱うときは、範囲チェックが重要です。
たとえば、点数は通常0から100の範囲です。
C#int score = 120;
if (score < 0 || score > 100)
{
Console.WriteLine("点数は0から100の範囲で入力してください");
}
else
{
Console.WriteLine($"点数は{score}点です");
}
ユーザー入力と組み合わせると、次のようになります。
C#Console.WriteLine("点数を入力してください");
string input = Console.ReadLine();
if (int.TryParse(input, out int score))
{
if (score < 0 || score > 100)
{
Console.WriteLine("点数は0から100の範囲で入力してください");
}
else
{
Console.WriteLine($"入力された点数は{score}点です");
}
}
else
{
Console.WriteLine("整数を入力してください");
}
年齢のチェックも同じ考え方です。
C#int age = 25;
if (age < 0)
{
Console.WriteLine("年齢に負の値は指定できません");
}
else if (age > 120)
{
Console.WriteLine("年齢が大きすぎます");
}
else
{
Console.WriteLine($"年齢は{age}歳です");
}
8-4. 合計・平均を計算する例
intの配列を使って、合計を計算できます。
C#int[] scores = { 80, 90, 70 };
int total = 0;
for (int i = 0; i < scores.Length; i++)
{
total += scores[i];
}
Console.WriteLine($"合計: {total}");
実行結果は次のようになります。
C#合計: 240
平均を求める場合は注意が必要です。
C#int average = total / scores.Length;
Console.WriteLine($"平均: {average}");
この場合、int同士の割り算になるため、小数部分は切り捨てられます。
より正確な平均を出したい場合は、doubleを使います。
C#double average = (double)total / scores.Length;
Console.WriteLine($"平均: {average}");
完全なコードは次のようになります。
C#int[] scores = { 80, 90, 70 };
int total = 0;
for (int i = 0; i < scores.Length; i++)
{
total += scores[i];
}
double average = (double)total / scores.Length;
Console.WriteLine($"合計: {total}");
Console.WriteLine($"平均: {average}");
実行結果は次のようになります。
C#合計: 240
平均: 80
割り切れない場合も、小数として計算できます。
C#int[] scores = { 80, 90, 71 };
int total = 0;
for (int i = 0; i < scores.Length; i++)
{
total += scores[i];
}
double average = (double)total / scores.Length;
Console.WriteLine($"平均: {average}");
9. C# int型に関するよくある質問
9-1. intとInt32はどちらを使うべき?
通常のC#コードでは、intを使うのがおすすめです。
C#int number = 100;
intはSystem.Int32の別名なので、機能的な違いはありません。
C#int a = 10;
System.Int32 b = 10;
どちらも同じ32ビット符号付き整数です。
ただし、C#のコードではintのほうが読みやすく、一般的によく使われます。一方、.NETの型名として明示したい場面や、リフレクション、仕様説明などではInt32と書かれることがあります。
初心者のうちは、基本的にintを使うと覚えておけば問題ありません。
9-2. intの初期値は必ず0?
intの既定値は0です。
C#Console.WriteLine(default(int));
実行結果は次のようになります。
C#0
クラスのフィールドや配列の要素は、自動的に0で初期化されます。
C#int[] numbers = new int[3];
Console.WriteLine(numbers[0]);
実行結果は次のようになります。
C#0
ただし、メソッド内のローカル変数は、代入する前に使用できません。
C#int number;
Console.WriteLine(number); // エラー
そのため、「intの既定値は0だが、ローカル変数は自分で初期化してから使う」と覚えておきましょう。
9-3. intで小数は扱える?
intで小数は扱えません。
C#int value = 1.5; // エラー
intは整数専用の型です。小数を扱う場合は、double、float、decimalなどを使います。
C#double value1 = 1.5;
float value2 = 1.5f;
decimal value3 = 1.5m;
また、int同士の割り算では小数部分が切り捨てられます。
C#int result = 5 / 2;
Console.WriteLine(result);
実行結果は次のようになります。
C#2
小数の結果が必要な場合は、片方をdoubleにします。
C#double result = 5.0 / 2;
Console.WriteLine(result);
実行結果は次のようになります。
C#2.5
9-4. intの範囲を超える数値を扱うには?
intの範囲を超える数値を扱う場合は、longを使います。
C#long value = 3000000000L;
longは64ビットの整数型で、intよりもはるかに大きな整数を扱えます。
C#long population = 8000000000L;
さらに大きな整数を扱う場合は、System.Numerics.BigIntegerを使う方法もあります。
C#using System.Numerics;
BigInteger bigNumber = BigInteger.Parse("123456789012345678901234567890");
Console.WriteLine(bigNumber);
通常のアプリケーションではintまたはlongで十分なことが多いですが、暗号計算や巨大な数値を扱う特殊な処理ではBigIntegerが使われることがあります。
9-5. 初心者がintで最初に覚えるべきこと
初心者がintで最初に覚えるべきことは、次のポイントです。
intは整数を扱う型です。
C#int number = 10;
小数は扱えません。
C#int value = 3.14; // エラー
intの範囲は、-2147483648から2147483647までです。
C#Console.WriteLine(int.MinValue);
Console.WriteLine(int.MaxValue);
ローカル変数は、値を代入してから使います。
C#int count = 0;
Console.WriteLine(count);
文字列から変換するときは、int.TryParseを使うと安全です。
C#string input = "123";
if (int.TryParse(input, out int number))
{
Console.WriteLine(number);
}
整数ならまずintを使い、大きすぎる場合はlong、小数ならdoubleやdecimalを使う、と覚えると理解しやすくなります。
まとめ
C#のintは、整数を扱うためのもっとも基本的なデータ型です。年齢、点数、個数、回数、配列のインデックス、ループのカウンターなど、多くの場面で使われます。
intはSystem.Int32の別名で、32ビットの符号付き整数です。扱える範囲は、-2147483648から2147483647までです。
C#Console.WriteLine(int.MinValue);
Console.WriteLine(int.MaxValue);
intの既定値は0ですが、ローカル変数は代入する前に使えません。
C#int number = 0;
文字列からintへ変換する場合は、int.Parse、int.TryParse、Convert.ToInt32などを使います。特にユーザー入力を扱う場合は、例外を避けやすいint.TryParseがおすすめです。
C#if (int.TryParse("100", out int number))
{
Console.WriteLine(number);
}
また、intでは小数を扱えません。小数が必要な場合はdoubleやdecimalを使い、大きな整数が必要な場合はlongを使います。
C#を学び始めたばかりの段階では、まずintの宣言、代入、四則演算、比較、変換、範囲をしっかり理解することが大切です。intを正しく使えるようになると、C#の基本的なプログラムをスムーズに書けるようになります。

