C# intとは?範囲・使い方・型変換・longとの違いを初心者向けに徹底解説

はじめに

C#で数値を扱うとき、最もよく使われる型のひとつがintです。

intは整数を扱うための基本的なデータ型で、年齢、個数、回数、点数、配列のインデックス、ループのカウンタなど、さまざまな場面で使われます。C#を学び始めたばかりの人にとって、intは最初に理解しておきたい重要な型です。

ただし、intには扱える数値の範囲があります。また、文字列からintへ変換する方法、longとの違い、オーバーフロー、nullの扱いなど、初心者がつまずきやすいポイントもあります。

この記事では、C#のintについて、範囲、サイズ、使い方、型変換、longとの違い、よくあるエラーまで初心者向けにわかりやすく解説します。

1. C# intとは?初心者向けにわかりやすく解説

1-1. intは整数を扱うための基本的なデータ型

C#のintは、整数を扱うためのデータ型です。

整数とは、小数点を含まない数値のことです。たとえば、次のような値はintで扱えます。

C#
10
0
-5
1000

一方で、次のような小数はintではそのまま扱えません。

C#
3.14
0.5
-1.25

intは、C#で数値を扱うときに非常によく使われます。特に、日常的な範囲の整数であれば、まずintを使うことが多いです。

C#
int age = 25;
int count = 10;
int score = 80;

このように、intを使うと「年齢」「個数」「点数」などを簡単に表現できます。

1-2. C#のintはSystem.Int32の別名

C#のintは、実は.NETSystem.Int32という型の別名です。

次の2つは同じ意味です。

C#
int number1 = 100;
System.Int32 number2 = 100;

C#では、System.Int32を短く書けるようにintというキーワードが用意されています。

通常のC#コードでは、System.Int32よりもintを使うことが一般的です。

C#
int price = 1200;

この書き方のほうが短く、読みやすいためです。

1-3. intで扱える値と扱えない値

intで扱えるのは、決められた範囲内の整数です。

C#のintで扱える範囲は、次のとおりです。

C#
-2,147,483,648  2,147,483,647

この範囲内であれば、正の整数、負の整数、0を扱えます。

C#
int a = 100;
int b = -200;
int c = 0;

しかし、範囲を超える値はintでは扱えません。

C#
// エラーになる例
// int bigNumber = 3000000000;

3,000,000,000intの最大値である2,147,483,647を超えているため、intには代入できません。このような大きな整数を扱う場合は、longを使います。

C#
long bigNumber = 3000000000L;

また、intは小数をそのまま扱えません。

C#
// エラーになる例
// int x = 3.14;

小数を扱いたい場合は、doubledecimalを使います。

1-4. intがよく使われる場面

C#のintは、次のような場面でよく使われます。

C#
int age = 30;          // 年齢
int quantity = 5; // 個数
int score = 90; // 点数
int index = 0; // 配列のインデックス
int count = 10; // 回数

特に、for文のカウンタとしてintはよく使われます。

C#
for (int i = 0; i < 5; i++)
{
Console.WriteLine(i);
}

このコードでは、iというint型の変数を使って、0から4までの値を順番に表示しています。

一般的なアプリケーション開発では、通常の整数であればintで十分なことが多いです。ただし、非常に大きな数値を扱う場合はlongを検討する必要があります。

2. C# intの範囲・サイズ・初期値

2-1. intの値の範囲は-2,147,483,648〜2,147,483,647

C#のintは、次の範囲の整数を扱えます。

C#
-2,147,483,648  2,147,483,647

この最小値と最大値は、次のように確認できます。

C#
Console.WriteLine(int.MinValue);
Console.WriteLine(int.MaxValue);

実行結果は次のようになります。

C#
-2147483648
2147483647

intは日常的な数値を扱うには十分な範囲を持っています。たとえば、年齢、個数、点数、月日、回数などは通常intで問題ありません。

しかし、人口、アクセス数、ファイルサイズ、大きなID、金額の累計など、非常に大きな値になる可能性がある場合は注意が必要です。

2-2. intのサイズは32ビット・4バイト

C#のintは、32ビットの整数型です。

32ビットは4バイトです。つまり、int型のサイズは4バイトです。

C#
Console.WriteLine(sizeof(int));

実行結果は次のようになります。

C#
4

intは32ビットの範囲で整数を表現するため、扱える値の範囲が決まっています。

同じ整数型でも、shortは16ビット、longは64ビットです。

C#
short smallNumber = 100;
int normalNumber = 100000;
long largeNumber = 10000000000L;

数値の範囲が大きくなるほど、使用するメモリサイズも大きくなります。

2-3. intの初期値は0

C#のintの初期値は0です。

たとえば、クラスのフィールドとしてintを宣言した場合、自動的に0で初期化されます。

C#
class Sample
{
int count;

public void Show()
{
Console.WriteLine(count);
}
}

この場合、countには初期値として0が入っています。

また、int配列を作成した場合も、各要素の初期値は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);
}

ローカル変数としてintを使う場合は、必ず使用前に値を代入しましょう。

C#
void Test()
{
int number = 0;
Console.WriteLine(number);
}

2-4. int.MinValueとint.MaxValueの使い方

int.MinValueintの最小値、int.MaxValueintの最大値を表します。

C#
Console.WriteLine(int.MinValue);
Console.WriteLine(int.MaxValue);

実行結果は次のとおりです。

C#
-2147483648
2147483647

これらは、範囲チェックを行うときに便利です。

C#
long value = 3000000000L;

if (value < int.MinValue || value > int.MaxValue)
{
Console.WriteLine("intの範囲外です");
}
else
{
int number = (int)value;
Console.WriteLine(number);
}

longなどの大きな型からintに変換する場合、intの範囲内に収まっているかを確認してから変換すると安全です。

2-5. 範囲を超えるとどうなる?オーバーフローの基本

intの範囲を超える計算を行うと、オーバーフローが発生することがあります。

たとえば、intの最大値に1を足すと、本来は2,147,483,648になります。しかし、この値はintの範囲を超えています。

C#
int max = int.MaxValue;
int result = max + 1;

Console.WriteLine(result);

状況によっては、結果が意図しない値になることがあります。たとえば、uncheckedの状態では、最大値を超えた結果が最小値側に回り込むような動作になります。

C#
unchecked
{
int max = int.MaxValue;
int result = max + 1;

Console.WriteLine(result);
}

実行結果は次のようになります。

C#
-2147483648

これは、intの範囲を超えたために起こる現象です。

オーバーフローを検出したい場合は、checkedを使います。

C#
checked
{
int max = int.MaxValue;
int result = max + 1;

Console.WriteLine(result);
}

この場合、実行時にOverflowExceptionが発生します。

3. C# intの基本的な使い方

3-1. int型の変数を宣言する方法

C#でint型の変数を宣言するには、次のように書きます。

C#
int number;

これは「numberという名前のint型変数を用意する」という意味です。

変数名は自由に決められますが、意味がわかる名前にすることが大切です。

C#
int age;
int price;
int count;
int score;

たとえば、年齢を入れる変数ならage、価格を入れる変数ならprice、個数を入れる変数ならcountのようにします。

3-2. intに値を代入する方法

int型の変数には、整数を代入できます。

C#
int age;
age = 25;

宣言と同時に値を代入することもできます。

C#
int age = 25;

値は後から変更できます。

C#
int count = 10;
count = 20;

Console.WriteLine(count);

実行結果は次のようになります。

C#
20

intは変数なので、プログラムの途中で値を変更しながら使えます。

3-3. 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);

実行結果は次のようになります。

C#
13
7
30
3

ここで注意したいのは、int同士の割り算では小数点以下が切り捨てられることです。

C#
int result = 10 / 3;
Console.WriteLine(result);

実行結果は次のようになります。

C#
3

10 / 3は数学的には3.333...ですが、int同士の計算なので結果もintになり、小数点以下は切り捨てられます。

小数を含む結果が欲しい場合は、doubleなどを使います。

C#
double result = 10.0 / 3;
Console.WriteLine(result);

3-4. intをif文やfor文で使う方法

intは、条件分岐のif文でもよく使われます。

C#
int score = 80;

if (score >= 60)
{
Console.WriteLine("合格です");
}
else
{
Console.WriteLine("不合格です");
}

このコードでは、scoreが60以上かどうかを判定しています。

また、for文のカウンタとしてもintはよく使われます。

C#
for (int i = 0; i < 5; i++)
{
Console.WriteLine(i);
}

実行結果は次のようになります。

C#
0
1
2
3
4

for文では、繰り返し回数を管理するためにint型の変数を使うのが一般的です。

3-5. int配列・List<int>で複数の整数を扱う方法

複数の整数をまとめて扱いたい場合は、int配列やList<int>を使います。

int配列の例です。

C#
int[] scores = { 80, 90, 75 };

Console.WriteLine(scores[0]);
Console.WriteLine(scores[1]);
Console.WriteLine(scores[2]);

実行結果は次のようになります。

C#
80
90
75

配列の要素には、インデックスを使ってアクセスします。インデックスは0から始まります。

要素数を後から増やしたい場合は、List<int>を使うと便利です。

C#
List<int> numbers = new List<int>();

numbers.Add(10);
numbers.Add(20);
numbers.Add(30);

foreach (int number in numbers)
{
Console.WriteLine(number);
}

List<int>を使うには、通常は次の名前空間を読み込みます。

C#
using System.Collections.Generic;

int[]は要素数が決まっている場合に便利で、List<int>は要素数が増減する場合に便利です。

4. C# intと文字列の変換方法

4-1. stringからintに変換するint.Parse

文字列をintに変換するには、int.Parseを使います。

C#
string text = "123";
int number = int.Parse(text);

Console.WriteLine(number);

実行結果は次のようになります。

C#
123

int.Parseは、文字列が正しい整数の形式である場合に使えます。

C#
string ageText = "25";
int age = int.Parse(ageText);

Console.WriteLine(age + 5);

実行結果は次のようになります。

C#
30

文字列のままだと数値計算ではなく文字列として扱われますが、intに変換すれば計算に使えるようになります。

4-2. 変換エラーを防ぐint.TryParse

int.Parseは便利ですが、数値ではない文字列を変換しようとすると例外が発生します。

C#
// エラーになる
// int number = int.Parse("abc");

安全に変換したい場合は、int.TryParseを使います。

C#
string text = "123";

bool success = int.TryParse(text, out int number);

if (success)
{
Console.WriteLine("変換成功: " + number);
}
else
{
Console.WriteLine("変換できませんでした");
}

int.TryParseは、変換に成功した場合はtrue、失敗した場合はfalseを返します。

数値以外の文字列が入力される可能性がある場合は、int.Parseよりもint.TryParseを使うほうが安全です。

C#
string input = "abc";

if (int.TryParse(input, out int value))
{
Console.WriteLine(value);
}
else
{
Console.WriteLine("数値を入力してください");
}

このように書けば、変換できない文字列が来てもプログラムが止まりにくくなります。

4-3. intからstringに変換するToString

intを文字列に変換するには、ToStringを使います。

C#
int number = 123;
string text = number.ToString();

Console.WriteLine(text);

実行結果は次のようになります。

C#
123

ToStringは、数値を画面表示や文字列結合に使いたいときに便利です。

C#
int age = 25;
string message = "年齢は" + age.ToString() + "歳です";

Console.WriteLine(message);

ただし、C#では文字列とint+で結合すると、自動的に文字列として扱われることもあります。

C#
int age = 25;
string message = "年齢は" + age + "歳です";

Console.WriteLine(message);

このコードでも問題なく動作します。

また、文字列補間を使うとさらに読みやすく書けます。

C#
int age = 25;
string message = $"年齢は{age}歳です";

Console.WriteLine(message);

4-4. 数値以外の文字列を変換するときの注意点

int.Parseint.TryParseで変換できるのは、基本的に整数として解釈できる文字列です。

C#
int a = int.Parse("123");
int b = int.Parse("-50");

しかし、次のような文字列は変換できません。

C#
"abc"
"12.3"
"1,000"
""
" "

たとえば、"12.3"は小数なのでintには直接変換できません。

C#
string text = "12.3";

if (int.TryParse(text, out int number))
{
Console.WriteLine(number);
}
else
{
Console.WriteLine("intに変換できません");
}

また、空文字や空白も変換できません。

C#
string input = "";

if (!int.TryParse(input, out int value))
{
Console.WriteLine("入力が正しくありません");
}

ユーザー入力を扱う場合は、必ず変換に失敗する可能性を考慮しましょう。

4-5. 入力フォームやコンソール入力でint変換を使う例

コンソール入力では、ユーザーが入力した値は文字列として取得されます。

C#
Console.Write("年齢を入力してください: ");
string input = Console.ReadLine();

int age = int.Parse(input);

Console.WriteLine($"あなたの年齢は{age}歳です");

ただし、この書き方では、ユーザーが数値以外を入力したときにエラーになります。

安全に書くなら、int.TryParseを使います。

C#
Console.Write("年齢を入力してください: ");
string input = Console.ReadLine();

if (int.TryParse(input, out int age))
{
Console.WriteLine($"あなたの年齢は{age}歳です");
}
else
{
Console.WriteLine("正しい整数を入力してください");
}

入力フォームやWebアプリでも、ユーザーが必ず正しい整数を入力するとは限りません。そのため、文字列からintに変換するときは、int.TryParseを使ってエラーを防ぐのが基本です。

5. C# intの型変換とキャスト

5-1. intからlong・double・decimalへの暗黙的な型変換

intからlongdoubledecimalなど、より広い範囲や異なる数値型へ変換する場合は、暗黙的な型変換ができます。

C#
int number = 100;

long longNumber = number;
double doubleNumber = number;
decimal decimalNumber = number;

このように、明示的なキャストを書かなくても変換できます。

intの値はlongの範囲に必ず収まるため、安全に変換できます。

C#
int count = 1000;
long totalCount = count;

このような変換は、情報が失われる可能性が低いため、C#が自動的に行ってくれます。

5-2. longやdoubleからintへの明示的なキャスト

longdoubleからintへ変換する場合は、明示的なキャストが必要です。

C#
long longNumber = 100;
int number = (int)longNumber;

longintよりも広い範囲の整数を扱えるため、値によってはintに収まらない可能性があります。そのため、C#では自動変換されません。

C#
long bigNumber = 3000000000L;
int number = (int)bigNumber;

Console.WriteLine(number);

このようなコードは、値がintの範囲を超えているため、意図しない結果になる可能性があります。

doubleからintに変換する場合も、明示的なキャストが必要です。

C#
double value = 12.8;
int number = (int)value;

Console.WriteLine(number);

実行結果は次のようになります。

C#
12

キャストでは、小数点以下が切り捨てられます。

5-3. 小数をintに変換すると小数点以下はどうなるか

doubledecimalなどの小数を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

ここでいう切り捨ては、0に近づく方向への切り捨てです。

つまり、12.912になり、-12.9-12になります。

四捨五入したい場合は、単純なキャストではなく、Math.Roundなどを使います。

C#
double value = 12.9;
int rounded = (int)Math.Round(value);

Console.WriteLine(rounded);

実行結果は次のようになります。

C#
13

5-4. Convert.ToInt32の使い方

Convert.ToInt32を使って、値をintに変換することもできます。

C#
string text = "123";
int number = Convert.ToInt32(text);

Console.WriteLine(number);

文字列だけでなく、doubleなどからも変換できます。

C#
double value = 12.8;
int number = Convert.ToInt32(value);

Console.WriteLine(number);

ただし、Convert.ToInt32で小数を変換する場合、単純な切り捨てではなく丸めが行われます。

C#
Console.WriteLine(Convert.ToInt32(12.4));
Console.WriteLine(Convert.ToInt32(12.5));
Console.WriteLine(Convert.ToInt32(12.6));

結果は、キャストとは異なる場合があります。

C#
12
12
13

Convert.ToInt32では、.5のようにちょうど中間の値の場合、最も近い偶数に丸められることがあります。これを理解せずに使うと、予想と違う結果になる場合があります。

5-5. キャストとConvert.ToInt32の違い

キャストとConvert.ToInt32には、いくつかの違いがあります。

まず、小数をintにする場合、キャストは小数点以下を切り捨てます。

C#
double value = 12.8;
int number = (int)value;

Console.WriteLine(number);

実行結果は次のようになります。

C#
12

一方、Convert.ToInt32は丸めを行います。

C#
double value = 12.8;
int number = Convert.ToInt32(value);

Console.WriteLine(number);

実行結果は次のようになります。

C#
13

また、nullを変換した場合の動作も異なります。

C#
string text = null;
int number = Convert.ToInt32(text);

Console.WriteLine(number);

この場合、Convert.ToInt320を返します。

一方で、int.Parsenullを渡すと例外が発生します。

C#
// エラーになる
// int number = int.Parse(null);

文字列から安全に変換したい場合は、基本的にはint.TryParseを使うのがおすすめです。小数を整数にしたい場合は、切り捨てなのか、丸めなのかを意識して、キャスト、Convert.ToInt32Math.Roundなどを使い分けましょう。

6. C# intとlongの違い

6-1. intとlongの範囲の違い

intlongの大きな違いは、扱える数値の範囲です。

intの範囲は次のとおりです。

C#
-2,147,483,648  2,147,483,647

一方、longの範囲は次のとおりです。

C#
-9,223,372,036,854,775,808  9,223,372,036,854,775,807

longintよりもはるかに大きな整数を扱えます。

C#
int normalNumber = 2000000000;
long largeNumber = 9000000000000000000L;

longの値を書くときは、末尾にLを付けることがあります。

C#
long value = 3000000000L;

Lを付けることで、その数値リテラルがlongであることを明示できます。

6-2. intとlongのサイズの違い

intは32ビット、longは64ビットの整数型です。

C#
Console.WriteLine(sizeof(int));
Console.WriteLine(sizeof(long));

実行結果は次のようになります。

C#
4
8

intは4バイト、longは8バイトです。

つまり、longintの2倍のメモリサイズを使います。

通常のアプリケーションでは、この差を過度に気にする必要はありません。ただし、大量の数値データを配列などで扱う場合は、メモリ使用量に影響することがあります。

C#
int[] intArray = new int[1000000];
long[] longArray = new long[1000000];

この場合、long配列はint配列よりも多くのメモリを使います。

6-3. intとlongの使い分け方

基本的には、通常の整数であればintを使うことが多いです。

C#
int age = 30;
int count = 100;
int score = 85;

一方で、intの範囲を超える可能性がある場合はlongを使います。

C#
long totalAccessCount = 5000000000L;
long fileSize = 10000000000L;

使い分けの目安は次のとおりです。

日常的な数値や小さな範囲の整数を扱う場合はintで十分です。非常に大きな値、累計値、ID、ファイルサイズ、アクセス数などを扱う場合はlongを検討します。

また、APIやデータベースの型に合わせることも重要です。データベース側がBIGINTであれば、C#側ではlongを使うことが多いです。

6-4. 大きな数値を扱うならlongを使うべきケース

次のようなケースでは、intではなくlongを使うことを検討しましょう。

C#
long userId = 3000000000L;
long totalSales = 5000000000L;
long fileSizeBytes = 10000000000L;
long totalAccess = 8000000000L;

たとえば、ユーザーIDや注文IDが非常に大きくなるシステムでは、intでは足りなくなる可能性があります。

C#
long orderId = 9876543210L;

また、ファイルサイズをバイト単位で扱う場合も、intの範囲を超えることがあります。

C#
long fileSize = 5L * 1024 * 1024 * 1024;

Console.WriteLine(fileSize);

このコードでは、5GBをバイト数で表しています。GB単位のファイルサイズはintの範囲を超えることがあるため、longが適しています。

6-5. intとlongを混在させるときの注意点

intlongを一緒に計算すると、結果は基本的にlongになります。

C#
int a = 10;
long b = 20;

long result = a + b;

このコードは問題ありません。

しかし、結果をintに入れようとするとエラーになります。

C#
int a = 10;
long b = 20;

// エラーになる
// int result = a + b;

a + bの結果はlongになるため、intに代入するには明示的なキャストが必要です。

C#
int result = (int)(a + b);

ただし、longの値がintの範囲を超えている場合、キャストすると意図しない値になる可能性があります。

C#
long big = 3000000000L;
int number = (int)big;

Console.WriteLine(number);

intlongを混在させる場合は、最終的な型が何になるのか、値がintの範囲に収まるのかを確認しましょう。

7. C# intでよくあるエラーと注意点

7-1. 「値が大きすぎる」コンパイルエラーの原因

intに範囲外の値を代入しようとすると、コンパイルエラーになります。

C#
// エラーになる
// int number = 3000000000;

3,000,000,000intの最大値である2,147,483,647を超えているためです。

このような場合は、longを使います。

C#
long number = 3000000000L;

longの数値リテラルには、末尾にLを付けるとわかりやすくなります。

C#
long population = 8000000000L;

大きな数値を扱う可能性がある場合は、最初からlongを使うことでエラーやオーバーフローを防ぎやすくなります。

7-2. オーバーフローによる意図しない計算結果

intの計算結果が範囲を超えると、オーバーフローによって意図しない値になることがあります。

C#
unchecked
{
int max = int.MaxValue;
int result = max + 1;

Console.WriteLine(result);
}

実行結果は次のようになります。

C#
-2147483648

最大値に1を足したのに、結果が負の数になっています。これは、intの範囲を超えて値が回り込んだためです。

このような問題は、金額や個数、累計値などを扱う処理で特に注意が必要です。

C#
int price = 2000000000;
int quantity = 2;

unchecked
{
int total = price * quantity;
Console.WriteLine(total);
}

この計算はintの範囲を超えるため、正しい結果にならない可能性があります。

大きな計算を行う場合は、longを使うと安全です。

C#
long price = 2000000000L;
long quantity = 2;
long total = price * quantity;

Console.WriteLine(total);

7-3. checkedとuncheckedでオーバーフローを制御する方法

C#では、checkeduncheckedを使ってオーバーフローの扱いを制御できます。

checkedを使うと、オーバーフローが発生したときに例外が発生します。

C#
try
{
checked
{
int max = int.MaxValue;
int result = max + 1;

Console.WriteLine(result);
}
}
catch (OverflowException)
{
Console.WriteLine("オーバーフローが発生しました");
}

このコードでは、int.MaxValue + 1intの範囲を超えるため、OverflowExceptionが発生します。

一方、uncheckedを使うと、オーバーフローしても例外は発生せず、値が回り込みます。

C#
unchecked
{
int max = int.MaxValue;
int result = max + 1;

Console.WriteLine(result);
}

実行結果は次のようになります。

C#
-2147483648

安全性を重視する処理ではcheckedを使うと、オーバーフローに早く気づけます。

7-4. 0除算で発生するDivideByZeroException

intを0で割ると、DivideByZeroExceptionが発生します。

C#
int a = 10;
int b = 0;

// エラーになる
// int result = a / b;

0で割ることは数学的に定義できないため、C#でも例外になります。

安全に割り算を行うには、割る数が0でないか確認しましょう。

C#
int a = 10;
int b = 0;

if (b != 0)
{
int result = a / b;
Console.WriteLine(result);
}
else
{
Console.WriteLine("0で割ることはできません");
}

ユーザー入力や外部データを使って割り算する場合は、0が入る可能性を考えておくことが重要です。

7-5. nullを代入したい場合はint?を使う

通常のintにはnullを代入できません。

C#
// エラーになる
// int number = null;

intは値型なので、必ず何らかの整数値を持ちます。

nullを扱いたい場合は、Nullable型であるint?を使います。

C#
int? number = null;

int?は、整数またはnullを表せる型です。

C#
int? age = null;

if (age.HasValue)
{
Console.WriteLine(age.Value);
}
else
{
Console.WriteLine("年齢は未設定です");
}

また、??演算子を使うと、nullの場合の初期値を指定できます。

C#
int? age = null;
int displayAge = age ?? 0;

Console.WriteLine(displayAge);

この場合、agenullなら0が使われます。

データベースのNULL値や、入力されていない値を扱う場合は、int?を使うと便利です。

8. C# intを使う実践コード例

8-1. 年齢や個数をintで管理する例

intは、年齢や個数の管理に適しています。

C#
int age = 28;
int itemCount = 3;

Console.WriteLine($"年齢: {age}歳");
Console.WriteLine($"商品数: {itemCount}個");

実行結果は次のようになります。

C#
年齢: 28
商品数: 3

商品の合計金額を計算する場合にもintを使えます。

C#
int price = 1200;
int quantity = 3;
int total = price * quantity;

Console.WriteLine($"合計金額: {total}円");

実行結果は次のようになります。

C#
合計金額: 3600

ただし、金額が非常に大きくなる可能性がある場合は、longdecimalも検討しましょう。

8-2. for文のカウンタとしてintを使う例

for文では、intをカウンタとしてよく使います。

C#
for (int i = 1; i <= 5; i++)
{
Console.WriteLine($"{i}回目の処理です");
}

実行結果は次のようになります。

C#
1回目の処理です
2回目の処理です
3回目の処理です
4回目の処理です
5回目の処理です

配列の要素を順番に処理するときにも、intのカウンタが使えます。

C#
int[] scores = { 80, 90, 75 };

for (int i = 0; i < scores.Length; i++)
{
Console.WriteLine($"{i + 1}人目の点数: {scores[i]}");
}

配列のインデックスは0から始まるため、i = 0から開始するのが一般的です。

8-3. ユーザー入力をintに変換して計算する例

ユーザーが入力した文字列をintに変換し、計算に使う例です。

C#
Console.Write("商品の価格を入力してください: ");
string priceText = Console.ReadLine();

Console.Write("個数を入力してください: ");
string quantityText = Console.ReadLine();

if (int.TryParse(priceText, out int price) &&
int.TryParse(quantityText, out int quantity))
{
int total = price * quantity;
Console.WriteLine($"合計金額は{total}円です");
}
else
{
Console.WriteLine("価格と個数は整数で入力してください");
}

int.TryParseを使うことで、数値以外の文字列が入力された場合でも安全に処理できます。

入力値を扱うプログラムでは、int.Parseよりもint.TryParseを使うほうが実用的です。

8-4. intの範囲チェックを行う例

longの値をintに変換する前に、範囲チェックを行う例です。

C#
long value = 3000000000L;

if (value < int.MinValue || value > int.MaxValue)
{
Console.WriteLine("intの範囲外です");
}
else
{
int number = (int)value;
Console.WriteLine($"変換結果: {number}");
}

このコードでは、valueintの範囲に収まるか確認しています。

範囲外の値を無理にintへキャストすると、意図しない結果になる可能性があります。安全なコードを書くためには、変換前に範囲チェックを行うことが大切です。

8-5. intとlongを使い分ける例

通常の数値にはintを使い、大きな数値にはlongを使う例です。

C#
int age = 35;
int itemCount = 10;

long totalAccessCount = 5000000000L;
long fileSizeBytes = 8000000000L;

Console.WriteLine($"年齢: {age}");
Console.WriteLine($"商品数: {itemCount}");
Console.WriteLine($"総アクセス数: {totalAccessCount}");
Console.WriteLine($"ファイルサイズ: {fileSizeBytes}バイト");

ageitemCountのように小さな整数はintで十分です。

一方、totalAccessCountfileSizeBytesのように大きな値になる可能性があるものはlongを使います。

このように、値の性質に応じてintlongを使い分けることで、わかりやすく安全なコードになります。

9. C# intに関するよくある質問

9-1. C#のintとIntegerは同じ?

C#では、基本的にIntegerというキーワードは使いません。

C#で整数を表す基本的な型はintです。

C#
int number = 100;

一方、IntegerはVisual Basicなどで使われる型名です。

C#でIntegerと書いても、通常はそのままでは使えません。C#ではintまたはSystem.Int32を使います。

C#
int a = 10;
System.Int32 b = 20;

C#を学ぶ場合は、整数型の基本はintと覚えておけば問題ありません。

9-2. intとInt32はどちらを使うべき?

C#では、通常はintを使うのがおすすめです。

intSystem.Int32は同じ型を表します。

C#
int a = 10;
System.Int32 b = 20;

どちらも32ビット整数です。

ただし、一般的なC#コードではintのほうがよく使われます。

C#
int count = 100;

System.Int32は、.NETの型名を明示したい場合や、リフレクション、型情報を扱う場面などで見ることがあります。

初心者のうちは、通常の変数宣言ではintを使えば問題ありません。

9-3. intに小数は入れられる?

intに小数はそのまま入れられません。

C#
// エラーになる
// int number = 3.14;

intは整数専用の型なので、小数を扱う場合はdoubledecimalを使います。

C#
double pi = 3.14;
decimal price = 123.45m;

小数をintに変換したい場合は、キャストや変換メソッドを使います。

C#
double value = 3.14;
int number = (int)value;

Console.WriteLine(number);

実行結果は次のようになります。

C#
3

キャストでは小数点以下が切り捨てられます。

9-4. intにnullを入れる方法は?

通常のintにはnullを入れられません。

C#
// エラーになる
// int number = null;

nullを入れたい場合は、int?を使います。

C#
int? number = null;

int?は、intの値またはnullを持てる型です。

C#
int? score = null;

if (score == null)
{
Console.WriteLine("点数は未入力です");
}
else
{
Console.WriteLine($"点数は{score}です");
}

データが未入力の場合や、データベースのNULLを扱う場合には、int?がよく使われます。

9-5. int・long・short・byteの違いは?

intlongshortbyteはいずれも整数を扱う型ですが、扱える範囲とサイズが異なります。

byteは0から255までの整数を扱えます。サイズは1バイトです。

C#
byte b = 255;

shortintより小さい範囲の整数を扱います。サイズは2バイトです。

C#
short s = 30000;

intは最もよく使われる整数型で、サイズは4バイトです。

C#
int i = 100000;

longは非常に大きな整数を扱える型で、サイズは8バイトです。

C#
long l = 10000000000L;

使い分けの基本は、通常の整数ならint、大きな整数ならlongです。shortbyteは、メモリ使用量を細かく意識する場合や、バイナリデータ、通信データなどを扱う場合に使われます。

まとめ

C#のintは、整数を扱うための基本的なデータ型です。

intSystem.Int32の別名で、32ビット、4バイトの整数型です。扱える範囲は-2,147,483,648から2,147,483,647までです。

C#
int number = 100;

年齢、個数、点数、回数、配列のインデックス、for文のカウンタなど、C#のプログラミングでは非常に多くの場面でintが使われます。

文字列からintへ変換する場合は、int.Parseint.TryParseを使います。特に、ユーザー入力のように正しい数値が入るとは限らない場合は、int.TryParseを使うと安全です。

C#
if (int.TryParse("123", out int value))
{
Console.WriteLine(value);
}

intからlongdoubleへは暗黙的に変換できますが、longdoubleからintへ変換する場合は、明示的なキャストが必要です。

C#
long bigNumber = 100;
int number = (int)bigNumber;

また、intの範囲を超えるとオーバーフローが発生する可能性があります。大きな数値を扱う場合は、longを使うことを検討しましょう。

C#
long largeNumber = 3000000000L;

通常の整数にはint、非常に大きな整数にはlong、小数にはdoubledecimalnullを扱いたい整数にはint?を使うと覚えておくと、C#の数値型を使い分けやすくなります。