整数および長整数リテラルは以下の字句定義で記述されます:
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" |
長整数を表す末尾の文字は小文字の "l" でも大文字の "L" でもかまいませんが、"l" は "1" に良く似ているので、 常に "L" を使うよう強く勧めます。
整数で表現できる最大の値よりも大きい整数のリテラル (例えば 32-bit 整数を使っている場合には 2147483647) は、 長整数として表現できる値であれば受理されます。 2.1値がメモリ上に収まるかどうかという問題を除けば、長整数リテラルには値域の 制限がありません。
整数リテラル (最初の行) と長整数リテラル (二行目および三行目) の例を 以下に示します:
7 2147483647 0177 3L 79228162514264337593543950336L 0377L 0x100000000L 79228162514264337593543950336 0xdeadbeef