int (C# リファレンス)int (C# Reference)

int は、次の表に示されたサイズと範囲に従って値を格納する整数型を示します。int denotes an integral type that stores values according to the size and range shown in the following table.

Type 範囲Range サイズSize .NET 型.NET type
int -2,147,483,648 ~ 2,147,483,647-2,147,483,648 to 2,147,483,647 符号付き 32 ビット整数Signed 32-bit integer System.Int32


int 変数を宣言し、10 進リテラル、16 進リテラル、または (C# 7.0 以降) バイナリ リテラルを割り当てることによって初期化できます。You can declare and initialize an int variable by assigning a decimal literal, a hexadecimal literal, or (starting with C# 7.0) a binary literal to it. 整数リテラルが int の範囲外にある場合 (つまり、Int32.MinValue より小さいか、Int32.MaxValue より大きい場合)、コンパイル エラーが発生します。If the integer literal is outside the range of int (that is, if it is less than Int32.MinValue or greater than Int32.MaxValue), a compilation error occurs.

次の例では、整数 90,946 を 10 進リテラル、16 進リテラル、バイナリ リテラルで表したものが、int 値に割り当てられています。In the following example, integers equal to 90,946 that are represented as decimal, hexadecimal, and binary literals are assigned to int values.

int intValue1 = 90946;
int intValue2 = 0x16342;

int intValue3 = 0b0001_0110_0011_0100_0010;
// The example displays the following output:
//          90946
//          90946
//          90946


16 進リテラルを表すにはプレフィックス 0x または 0X を使い、バイナリ リテラルを表すにはプレフィックス 0b または 0B を使います。You use the prefix 0x or 0X to denote a hexadecimal literal and the prefix 0b or 0B to denote a binary literal. 10 進リテラルには、プレフィックスはありません。Decimal literals have no prefix.

C# 7.0 以降では、読みやすさを強化するためにいくつかの機能が追加されています。Starting with C# 7.0, a couple of features have been added to enhance readability.

  • C# 7.0 では、桁区切り記号としてアンダースコア文字 (_) が使用できます。C# 7.0 allows the usage of the underscore character, _, as a digit separator.
  • C# 7.2 では、プレフィックスの後に、_ をバイナリまたは 16 進リテラルの桁区切り記号として使用できます。C# 7.2 allows _ to be used as a digit separator for a binary or hexadecimal literal, after the prefix. 10 進リテラルは先頭にアンダー スコアを持つことはできません。A decimal literal isn't permitted to have a leading underscore.

以下にいくつか例を示します。Some examples are shown below.

int intValue1 = 90_946;

int intValue2 = 0x0001_6342;

int intValue3 = 0b0001_0110_0011_0100_0010;

int intValue4 = 0x_0001_6342;       // C# 7.2 onwards

int intValue5 = 0b_0001_0110_0011_0100_0010;       // C# 7.2 onwards
// The example displays the following output:
//          90946
//          90946
//          90946
//          90946
//          90946

整数リテラルでは型を示すサフィックスを含めることもできますが、int 型を示すサフィックスはありません。Integer literals can also include a suffix that denotes the type, although there is no suffix that denotes the int type. サフィックスがない整数リテラルの型は、以下の型のうちその値を表すことができる最初のものになります。If an integer literal has no suffix, its type is the first of the following types in which its value can be represented:

  1. int
  2. uintuint
  3. longlong
  4. ulongulong

ここで示した例では、リテラル 90946 は int 型になります。In these examples, the literal 90946 is of type int.


int から longfloatdoubledecimal への、定義済みの暗黙の型変換が組み込まれています。There is a predefined implicit conversion from int to long, float, double, or decimal. 次に例を示します。For example:

// '123' is an int, so an implicit conversion takes place here:
float f = 123;

sbytebyteshortushortchar から int への、定義済みの暗黙の型変換が組み込まれています。There is a predefined implicit conversion from sbyte, byte, short, ushort, or char to int. たとえば、次の代入ステートメントは、キャストを使用しない場合、コンパイル エラーになります。For example, the following assignment statement will produce a compilation error without a cast:

long aLong = 22;
int i1 = aLong;       // Error: no implicit conversion from long.
int i2 = (int)aLong;  // OK: explicit conversion.

浮動小数点型から int への暗黙的な変換が行われないことにも注意してください。Notice also that there is no implicit conversion from floating-point types to int. たとえば、次のステートメントは、明示的なキャストを使用しない限り、コンパイル エラーになります。For example, the following statement generates a compiler error unless an explicit cast is used:

int x = 3.0;         // Error: no implicit conversion from double.
int y = (int)3.0;    // OK: explicit conversion.

浮動小数点型と整数型の混在する算術式の詳細については、「float」と「double」を参照してください。For more information on arithmetic expressions with mixed floating-point types and integral types, see float and double.

C# 言語仕様C# Language Specification

詳細については、「C# 言語仕様」の整数型に関するセクションを参照してください。For more information, see Integral types in the C# Language Specification. 言語仕様は、C# の構文と使用法に関する信頼性のある情報源です。The language specification is the definitive source for C# syntax and usage.

関連項目See also