Le costanti di tipo intero e long vengono descritte dalle seguenti definizioni lessicali:
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" |
Anche se si puó utilizzare sia il suffisso "l" che "L" per indicare una costante long, è altamente raccomandato di utilizzare sempre "L", poiché la lettera "l" è troppo simile alla cifra "1".
Le costanti intere che sono maggiori del più grande numero intero rappresentabile (per esempio 2147483647 quando si utilizza un'aritmetica a 32 bit) vengono accettate come se fossero costanti long. 2.1Non c'é limite alla lunghezza delle costanti long, a parte la limitazione dovuta alla dimensione della memoria disponibile.
Alcuni esempi di costanti numeriche intere (prima riga) e long (seconda e terza riga):
7 2147483647 0177 3L 79228162514264337593543950336L 0377L 0x100000000L 79228162514264337593543950336 0xdeadbeef