「3.10.1. 整数リテラル」の編集履歴(バックアップ)一覧はこちら

3.10.1. 整数リテラル」(2012/09/05 (水) 22:41:04) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

*[[3. 字句構造]] **[[3.1. Unicode]] **[[3.2. 字句変換]] **[[3.3. Unicodeエスケープ]] **[[3.4. 行終端子]] **[[3.5. 入力要素とトークン]] **[[3.6. 空白]] **[[3.7. コメント]] **[[3.8. 識別子]] **[[3.9. キーワード]] **[[3.10. リテラル]] ***3.10.1. 整数リテラル 整数リテラル(integer literal)は10進、16進、8進、2進のいずれかで表記することができます。 #divstyle(background-color:#f0f0f0;border:1px solid red;padding 4px){ &i(){IntegerLiteral}:   &i(){DecimalIntegerLiteral}   &i(){HexIntegerLiteral}   &i(){OctalIntegerLiteral}   &i(){BinaryIntegerLiteral} &i(){DecimalIntegerLiteral}:   &i(){DecimalNumeral} &i(){IntegerTypeSuffix&sub(){opt}} &i(){HexIntegerLiteral}:   &i(){HexNumeral} &i(){IntegerTypeSuffix&sub(){opt}} &i(){OctalIntegerLiteral}:   &i(){OctalNumeral} &i(){IntegerTypeSuffix&sub(){opt}} &i(){BinaryIntegerLiteral}:   &i(){BinaryNumeral} &i(){IntegerTypeSuffix&sub(){opt}} &i(){IntegerTypeSuffix}: one of   &tt(){l} &tt(){L} } 末尾にASCII文字で&tt(){l}もしくは&tt(){L}が付いていればその整数リテラルはlong型です。それ以外ならそれはint型です(&link_anchor(4.2.1. 整数型と値,page=4.2. プリミティブ型と値){4.2.1.})。 &i(){&small(){末尾文字は&tt(){L}が推奨されます。文字&tt(){l}は数字の1と見間違いやすいからです。}} 整数の桁を区切るのにアンダースコアを使用できます。 16進数や2進数のリテラルの場合、整数は文字&tt(){0x}や&tt(){0b}の直後から型接尾語の前までにしか書くことができません。このため、アンダースコアは&tt(){0x}や&tt(){0b}の直後や最後の桁の直後には使用できません。 10進数や8進数のリテラルの場合、整数は型接尾語の前にまでにしか書くことが出来ません。このため、アンダースコアは最初の桁より前や最後の桁の直後には使用できません。8進数の場合、最初の&tt(){0}(整数の一部とみなせる)の直後からアンダースコアを使用することはできます。ゼロ以外の10進数リテラルの場合、最初のゼロ以外の数字の後にアンダースコアを使用することができます。 10進数は整数のゼロを表す単一のASCII文字&tt(){0}か、正の整数を表すASCII文字&tt(){1}~&tt(){9}に0個以上のASCII文字&tt(){0}~&tt(){9}(アンダースコアを含む)が続く表記のいずれかです。 #divstyle(background-color:#f0f0f0;border:1px solid red;padding 4px){ &i(){DecimalNumeral}:   &tt(){0}   &i(){NonZeroDigit} &i(){Digits&sub(){opt}}   &i(){NonZeroDigit} &i(){Underscores} &i(){Digits} &i(){Digits}:   &i(){Digit}   &i(){Digit} &i(){DigitsAndUnderscores&sub(){opt}} &i(){Digit} &i(){Digit}:   &tt(){0}   &i(){NonZeroDigit} &i(){NonZeroDigit}: one of   &tt(){1 2 3 4 5 6 7 8 9} &i(){DigitsAndUnderscores}:   &i(){DigitOrUnderscore}   &i(){DigitsAndUnderscores} &i(){DigitOrUnderscore} &i(){DigitOrUnderscore}:   &i(){Digit}   &tt(){_} &i(){Underscores}:   &tt(){_}   &i(){Underscores} &tt(){_} } 16進数は先頭にASCII文字&tt(){0x}もしくは&tt(){0X}があり続く1つ以上のASCII文字16進数(アンダースコアを含む)で表され、正、ゼロ、負のいずれかの整数を表します。 16進数の10から15の値はASCII文字の&tt(){A}から&tt(){F}もしくは&tt(){a}から&tt(){f}によってそれぞれ表します。大文字小文字問いません。 #divstyle(background-color:#f0f0f0;border:1px solid red;padding 4px){ &i(){HexNumeral}:   &tt(){0} &tt(){x} &i(){HexDigits}   &tt(){0} &tt(){X} &i(){HexDigits} &i(){HexDigits}:   &i(){HexDigit}   &i(){HexDigit} &i(){HexDigitsAndUnderscores&sub(){opt}} &i(){HexDigit} &i(){HexDigit}: one of   &tt(){0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F} &i(){HexDigitsAndUnderscores}:   &i(){HexDigitOrUnderscore}   &i(){HexDigitsAndUnderscores} &i(){HexDigitOrUnderscore} &i(){HexDigitOrUnderscore}:   &i(){HexDigit}   &tt(){_} } &i(){&small(){上記の&i(){HexDigit}の生成規則は[[3.3.>3.3. Unicodeエスケープ]]からきています。}} 8進数は先頭にASCII数字&tt(){0}があり続く1つ以上のASCII数字&tt(){0}から&tt(){7}(アンダースコアを含む)で表され、正、ゼロ、負のいずれかの整数を表します。 #divstyle(background-color:#f0f0f0;border:1px solid red;padding 4px){ &i(){OctalNumeral}:   &tt(){0} &i(){OctalDigits}   &tt(){0} &i(){Underscores} &i(){OctalDigits} &i(){OctalDigits}:   &i(){OctalDigit}   &i(){OctalDigit} &i(){OctalDigitsAndUnderscores&sub(){opt}} &i(){OctalDigit} &i(){OctalDigit}: one of   &tt(){0 1 2 3 4 5 6 7} &i(){OctalDigitsAndUnderscores}:   &i(){OctalDigitOrUnderscore}   &i(){OctalDigitsAndUnderscores} &i(){OctalDigitOrUnderscore} &i(){OctalDigitOrUnderscore}:   &i(){OctalDigit}   &tt(){_} } &i(){&small(){8進数は常に2桁以上の数字で構成されます。&tt(){0}は常に10進数とみなされすが、数値&tt(){0}、&tt(){00}、&tt(){0x0}は全て全く同じ整数値を表しているため、実質上問題になりません。}} 2進数は先頭にASCII文字&tt(){0b}もしくは&tt(){0B}があり続く1つ以上のASCII数字&tt(){0}もしくは&tt(){1}(アンダースコアを含む)で表され、正、ゼロ、負のいずれかの整数を表します。 #divstyle(background-color:#f0f0f0;border:1px solid red;padding 4px){ &i(){BinaryNumeral}:   &tt(){0} &tt(){b} &i(){BinaryDigits}   &tt(){0} &tt(){B} &i(){BinaryDigits} &i(){BinaryDigits}:   &i(){BinaryDigit}   &i(){BinaryDigit} &i(){BinaryDigitsAndUnderscores&sub(){opt}} &i(){BinaryDigit} &i(){BinaryDigit}: one of   &tt(){0 1} &i(){BinaryDigitsAndUnderscores}:   &i(){BinaryDigitOrUnderscore}   &i(){BinaryDigitsAndUnderscores} &i(){BinaryDigitOrUnderscore} &i(){BinaryDigitOrUnderscore}:   &i(){BinaryDigit}   &tt(){_} } &tt(){int}型の10進リテラルの最大値は&tt(){2147483648(2&sup(){31})}です。 &tt(){int}型リテラルを記述できる場所ならどこでも&tt(){0}から&tt(){2147483647}までの10進リテラルを書くことができます。 &bold(){&tt(){2147483648(2&sup(){31})}を超える&tt(){int}型の10進リテラルや[[単項マイナス演算子>15.15.4. 単項マイナス演算子-]]オペランド以外での&tt(){2147483648}はコンパイルエラーとなります。} &tt(){int}型正の最大値である10進数で&tt(){2147483647(2&sup(){31}-1)}を16進、8進、2進リテラルで表すと、それぞれ以下の通りです。: -&tt(){0x7fff_ffff} -&tt(){0177_7777_7777} -&tt(){0b0111_1111_1111_1111_1111_1111_1111_1111} &tt(){int}型負の最大値である10進数で&tt(){-2147483648(2&sup(){31})}を16進、8進、2進リテラルで表すと、それぞれ以下の通りです。: -&tt(){0x8000_0000} -&tt(){0200_0000_0000} -&tt(){0b1000_0000_0000_0000_0000_0000_0000_0000} 10進数&tt(){-1}を16進、8進、2進リテラルで表すと、それぞれ以下の通りです。: -&tt(){0xffff_ffff} -&tt(){0377_7777_7777} -&tt(){0b1111_1111_1111_1111_1111_1111_1111_1111} &bold(){&tt(){int}型リテラルで32ビットを超える16進、8進、2進リテラルはコンパイルエラーとなります。} &tt(){long}型の10進リテラルの最大値は&tt(){9223372036854775808L(2&sup(){63})}です。 &tt(){long}型リテラルを記述できる場所ならどこでも&tt(){0L}から&tt(){9223372036854775807L}までの10進リテラルを書くことができます。 &bold(){&tt(){9223372036854775808L(2&sup(){63})}を超える&tt(){long}型の10進リテラルや[[単項マイナス演算子>15.15.4. 単項マイナス演算子-]]オペランド以外での&tt(){9223372036854775808L}はコンパイルエラーとなります。} &tt(){long}型正の最大値である10進数で&tt(){9223372036854775807L(2&sup(){63}-1)}を16進、8進、2進リテラルで表すと、それぞれ以下の通りです。: -&tt(){0x7fff_ffff_ffff_ffffL} -&tt(){07_7777_7777_7777_7777_7777L} -&tt(){0b0111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111L} &tt(){long}型負の最大値である10進数で&tt(){-9223372036854775808L(2&sup(){63})}を16進、8進、2進リテラルで表すと、それぞれ以下の通りです。: -&tt(){0x8000_0000_0000_0000L} -&tt(){010_0000_0000_0000_0000_0000L} -&tt(){0b1000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000L} 10進数&tt(){-1L}を16進、8進、2進リテラルで表すと、それぞれ以下の通りです。: -&tt(){0xffff_ffff_ffff_ffffL} -&tt(){•017_7777_7777_7777_7777_7777L} -&tt(){0b1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111L} &bold(){&tt(){long}型リテラルで64ビットを超える16進、8進、2進リテラルはコンパイルエラーとなります。} #divstyle(background-color:#f0f0ff;border:1px solid black;padding 4px){ &i(){&small(){&tt(){int}型リテラルの例:}} 0  2  0372  0xDada_Cafe  1996  0x00_FF__00_FF &i(){&small(){&tt(){long}型リテラルの例:}} 0l  0777L  0x100000000L  2_147_483_648L  0xC0B0L } ***[[3.10.2. 浮動小数点リテラル]] ***[[3.10.3. ブールリテラル]] ***[[3.10.4. 文字リテラル]] ***[[3.10.5. 文字列リテラル]] ***[[3.10.6. 文字・文字列リテラル用のエスケープシーケンス]] ***[[3.10.7. ヌルリテラル]] **[[3.11. 分離子]] **[[3.12. 演算子]]
*[[3. 字句構造]] **[[3.1. Unicode]] **[[3.2. 字句変換]] **[[3.3. Unicodeエスケープ]] **[[3.4. 行終端子]] **[[3.5. 入力要素とトークン]] **[[3.6. 空白]] **[[3.7. コメント]] **[[3.8. 識別子]] **[[3.9. キーワード]] **[[3.10. リテラル]] ***3.10.1. 整数リテラル &i(){整数リテラル(integer literal)}は10進、16進、8進、2進のいずれかで表記することができます。 #divstyle(background-color:#f0f0f0;border:1px solid red;padding 4px){ &i(){IntegerLiteral}:   &i(){DecimalIntegerLiteral}   &i(){HexIntegerLiteral}   &i(){OctalIntegerLiteral}   &i(){BinaryIntegerLiteral} &i(){DecimalIntegerLiteral}:   &i(){DecimalNumeral} &i(){IntegerTypeSuffix&sub(){opt}} &i(){HexIntegerLiteral}:   &i(){HexNumeral} &i(){IntegerTypeSuffix&sub(){opt}} &i(){OctalIntegerLiteral}:   &i(){OctalNumeral} &i(){IntegerTypeSuffix&sub(){opt}} &i(){BinaryIntegerLiteral}:   &i(){BinaryNumeral} &i(){IntegerTypeSuffix&sub(){opt}} &i(){IntegerTypeSuffix}: one of   &tt(){l} &tt(){L} } 末尾にASCII文字で&tt(){l}もしくは&tt(){L}が付いていればその整数リテラルはlong型です。それ以外ならそれはint型です(&link_anchor(4.2.1. 整数型と値,page=4.2. プリミティブ型と値){4.2.1.})。 &i(){&small(){末尾文字は&tt(){L}が推奨されます。文字&tt(){l}は数字の1と見間違いやすいからです。}} 整数の桁を区切るのにアンダースコアを使用できます。 16進数や2進数のリテラルの場合、整数は文字&tt(){0x}や&tt(){0b}の直後から型接尾語の前までにしか書くことができません。このため、アンダースコアは&tt(){0x}や&tt(){0b}の直後や最後の桁の直後には使用できません。 10進数や8進数のリテラルの場合、整数は型接尾語の前にまでにしか書くことが出来ません。このため、アンダースコアは最初の桁より前や最後の桁の直後には使用できません。8進数の場合、最初の&tt(){0}(整数の一部とみなせる)の直後からアンダースコアを使用することはできます。ゼロ以外の10進数リテラルの場合、最初のゼロ以外の数字の後にアンダースコアを使用することができます。 10進数は整数のゼロを表す単一のASCII文字&tt(){0}か、正の整数を表すASCII文字&tt(){1}~&tt(){9}に0個以上のASCII文字&tt(){0}~&tt(){9}(アンダースコアを含む)が続く表記のいずれかです。 #divstyle(background-color:#f0f0f0;border:1px solid red;padding 4px){ &i(){DecimalNumeral}:   &tt(){0}   &i(){NonZeroDigit} &i(){Digits&sub(){opt}}   &i(){NonZeroDigit} &i(){Underscores} &i(){Digits} &i(){Digits}:   &i(){Digit}   &i(){Digit} &i(){DigitsAndUnderscores&sub(){opt}} &i(){Digit} &i(){Digit}:   &tt(){0}   &i(){NonZeroDigit} &i(){NonZeroDigit}: one of   &tt(){1 2 3 4 5 6 7 8 9} &i(){DigitsAndUnderscores}:   &i(){DigitOrUnderscore}   &i(){DigitsAndUnderscores} &i(){DigitOrUnderscore} &i(){DigitOrUnderscore}:   &i(){Digit}   &tt(){_} &i(){Underscores}:   &tt(){_}   &i(){Underscores} &tt(){_} } 16進数は先頭にASCII文字&tt(){0x}もしくは&tt(){0X}があり続く1つ以上のASCII文字16進数(アンダースコアを含む)で表され、正、ゼロ、負のいずれかの整数を表します。 16進数の10から15の値はASCII文字の&tt(){A}から&tt(){F}もしくは&tt(){a}から&tt(){f}によってそれぞれ表します。大文字小文字問いません。 #divstyle(background-color:#f0f0f0;border:1px solid red;padding 4px){ &i(){HexNumeral}:   &tt(){0} &tt(){x} &i(){HexDigits}   &tt(){0} &tt(){X} &i(){HexDigits} &i(){HexDigits}:   &i(){HexDigit}   &i(){HexDigit} &i(){HexDigitsAndUnderscores&sub(){opt}} &i(){HexDigit} &i(){HexDigit}: one of   &tt(){0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F} &i(){HexDigitsAndUnderscores}:   &i(){HexDigitOrUnderscore}   &i(){HexDigitsAndUnderscores} &i(){HexDigitOrUnderscore} &i(){HexDigitOrUnderscore}:   &i(){HexDigit}   &tt(){_} } &i(){&small(){上記の&i(){HexDigit}の生成規則は[[3.3.>3.3. Unicodeエスケープ]]からきています。}} 8進数は先頭にASCII数字&tt(){0}があり続く1つ以上のASCII数字&tt(){0}から&tt(){7}(アンダースコアを含む)で表され、正、ゼロ、負のいずれかの整数を表します。 #divstyle(background-color:#f0f0f0;border:1px solid red;padding 4px){ &i(){OctalNumeral}:   &tt(){0} &i(){OctalDigits}   &tt(){0} &i(){Underscores} &i(){OctalDigits} &i(){OctalDigits}:   &i(){OctalDigit}   &i(){OctalDigit} &i(){OctalDigitsAndUnderscores&sub(){opt}} &i(){OctalDigit} &i(){OctalDigit}: one of   &tt(){0 1 2 3 4 5 6 7} &i(){OctalDigitsAndUnderscores}:   &i(){OctalDigitOrUnderscore}   &i(){OctalDigitsAndUnderscores} &i(){OctalDigitOrUnderscore} &i(){OctalDigitOrUnderscore}:   &i(){OctalDigit}   &tt(){_} } &i(){&small(){8進数は常に2桁以上の数字で構成されます。&tt(){0}は常に10進数とみなされすが、数値&tt(){0}、&tt(){00}、&tt(){0x0}は全て全く同じ整数値を表しているため、実質上問題になりません。}} 2進数は先頭にASCII文字&tt(){0b}もしくは&tt(){0B}があり続く1つ以上のASCII数字&tt(){0}もしくは&tt(){1}(アンダースコアを含む)で表され、正、ゼロ、負のいずれかの整数を表します。 #divstyle(background-color:#f0f0f0;border:1px solid red;padding 4px){ &i(){BinaryNumeral}:   &tt(){0} &tt(){b} &i(){BinaryDigits}   &tt(){0} &tt(){B} &i(){BinaryDigits} &i(){BinaryDigits}:   &i(){BinaryDigit}   &i(){BinaryDigit} &i(){BinaryDigitsAndUnderscores&sub(){opt}} &i(){BinaryDigit} &i(){BinaryDigit}: one of   &tt(){0 1} &i(){BinaryDigitsAndUnderscores}:   &i(){BinaryDigitOrUnderscore}   &i(){BinaryDigitsAndUnderscores} &i(){BinaryDigitOrUnderscore} &i(){BinaryDigitOrUnderscore}:   &i(){BinaryDigit}   &tt(){_} } &tt(){int}型の10進リテラルの最大値は&tt(){2147483648(2&sup(){31})}です。 &tt(){int}型リテラルを記述できる場所ならどこでも&tt(){0}から&tt(){2147483647}までの10進リテラルを書くことができます。 &bold(){&tt(){2147483648(2&sup(){31})}を超える&tt(){int}型の10進リテラルや[[単項マイナス演算子>15.15.4. 単項マイナス演算子-]]オペランド以外での&tt(){2147483648}はコンパイルエラーとなります。} &tt(){int}型正の最大値である10進数で&tt(){2147483647(2&sup(){31}-1)}を16進、8進、2進リテラルで表すと、それぞれ以下の通りです。: -&tt(){0x7fff_ffff} -&tt(){0177_7777_7777} -&tt(){0b0111_1111_1111_1111_1111_1111_1111_1111} &tt(){int}型負の最大値である10進数で&tt(){-2147483648(2&sup(){31})}を16進、8進、2進リテラルで表すと、それぞれ以下の通りです。: -&tt(){0x8000_0000} -&tt(){0200_0000_0000} -&tt(){0b1000_0000_0000_0000_0000_0000_0000_0000} 10進数&tt(){-1}を16進、8進、2進リテラルで表すと、それぞれ以下の通りです。: -&tt(){0xffff_ffff} -&tt(){0377_7777_7777} -&tt(){0b1111_1111_1111_1111_1111_1111_1111_1111} &bold(){&tt(){int}型リテラルで32ビットを超える16進、8進、2進リテラルはコンパイルエラーとなります。} &tt(){long}型の10進リテラルの最大値は&tt(){9223372036854775808L(2&sup(){63})}です。 &tt(){long}型リテラルを記述できる場所ならどこでも&tt(){0L}から&tt(){9223372036854775807L}までの10進リテラルを書くことができます。 &bold(){&tt(){9223372036854775808L(2&sup(){63})}を超える&tt(){long}型の10進リテラルや[[単項マイナス演算子>15.15.4. 単項マイナス演算子-]]オペランド以外での&tt(){9223372036854775808L}はコンパイルエラーとなります。} &tt(){long}型正の最大値である10進数で&tt(){9223372036854775807L(2&sup(){63}-1)}を16進、8進、2進リテラルで表すと、それぞれ以下の通りです。: -&tt(){0x7fff_ffff_ffff_ffffL} -&tt(){07_7777_7777_7777_7777_7777L} -&tt(){0b0111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111L} &tt(){long}型負の最大値である10進数で&tt(){-9223372036854775808L(2&sup(){63})}を16進、8進、2進リテラルで表すと、それぞれ以下の通りです。: -&tt(){0x8000_0000_0000_0000L} -&tt(){010_0000_0000_0000_0000_0000L} -&tt(){0b1000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000L} 10進数&tt(){-1L}を16進、8進、2進リテラルで表すと、それぞれ以下の通りです。: -&tt(){0xffff_ffff_ffff_ffffL} -&tt(){•017_7777_7777_7777_7777_7777L} -&tt(){0b1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111L} &bold(){&tt(){long}型リテラルで64ビットを超える16進、8進、2進リテラルはコンパイルエラーとなります。} #divstyle(background-color:#f0f0ff;border:1px solid black;padding 4px){ &i(){&small(){&tt(){int}型リテラルの例:}} 0  2  0372  0xDada_Cafe  1996  0x00_FF__00_FF &i(){&small(){&tt(){long}型リテラルの例:}} 0l  0777L  0x100000000L  2_147_483_648L  0xC0B0L } ***[[3.10.2. 浮動小数点リテラル]] ***[[3.10.3. ブールリテラル]] ***[[3.10.4. 文字リテラル]] ***[[3.10.5. 文字列リテラル]] ***[[3.10.6. 文字・文字列リテラル用のエスケープシーケンス]] ***[[3.10.7. ヌルリテラル]] **[[3.11. 分離子]] **[[3.12. 演算子]]

表示オプション

横に並べて表示:
変化行の前後のみ表示:
目安箱バナー