There are three types of numeric literals: plain integers, long
integers, and floating point numbers.
Integer and long integer literals are described by the following lexical definitions:
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"
Although both lower case `l' and upper case `L' are allowed as suffix for long integers, it is strongly recommended to always use `L', since the letter `l' looks too much like the digit `1'.
Plain integer decimal literals must be at most [tex2html_wrap1102](i.e., the largest positive integer, assuming 32-bit arithmetic). Plain octal and hexadecimal literals may be as large as [tex2html_wrap1104], but values larger than [tex2html_wrap1106]are converted to a negative value by subtracting [tex2html_wrap1108]. There is no limit for long integer literals.
Some examples of plain and long integer literals:
7 2147483647 0177 0x80000000 3L 79228162514264337593543950336L 0377L 0x100000000L
Floating point literals are described by the following lexical definitions:
floatnumber: pointfloat | exponentfloat
pointfloat: [intpart] fraction | intpart "."
exponentfloat: (intpart | pointfloat) exponent
intpart: digit+
fraction: "." digit+
exponent: ("e"|"E") ["+"|"-"] digit+
The allowed range of floating point literals is implementation-dependent.
Some examples of floating point literals:
3.14 10. .001 1e100 3.14e-10
Note that numeric literals do not include a sign; a phrase like -1 is actually an expression composed of the operator - and the literal 1.