##
4 整数および長整数リテラル

整数および長整数リテラルは以下の字句定義で記述されます:

  longinteger | ::= | integer ("l" | "L")
  integer | ::= | decimalinteger | octinteger | hexinteger
  decimalinteger | ::= | nonzerodigit digit* | "0"
  octinteger | ::= | "0" octdigit+
  hexinteger | ::= | "0" ("x" | "X") hexdigit+
  nonzerodigit | ::= | "1"..."9"
  octdigit | ::= | "0"..."7"
  hexdigit | ::= | digit | "a"..."f" | "A"..."F"

  Download entire grammar as text.

長整数を表す末尾の文字は小文字の "`l`" でも大文字の "`L`" でもかまいませんが、"`l`" は "`1`" に良く似ているので、 常に "`L`" を使うよう強く勧めます。

整数で表現できる最大の値よりも大きい整数のリテラル (例えば 32-bit 整数を使っている場合には 2147483647) は、 長整数として表現できる値であれば受理されます。 1値がメモリ上に収まるかどうかという問題を除けば、長整数リテラルには値域の 制限がありません。

整数リテラル (最初の行) と長整数リテラル (二行目および三行目) の例を 以下に示します:

    7     2147483647                        0177
    3L    79228162514264337593543950336L    0377L   0x100000000L
          79228162514264337593543950336             0xdeadbeef

#### Footnotes

... 長整数として表現できる値であれば受理されます。1
  バージョン 2.4 以前の Python では， 8 進および 16 進のリテラル のうち，通常の整数型として表現可能な値より大きく，かつ符号無しの 32-bit (32-bit 演算を使う計算機の場合) 整数で表現できる最大値，すなわち 4294967296 よりも小さな数は，リテラルを符号無し整数として表現した値から 4294967296 を引いて得られる負の整数として扱っていました．