## 3.1.1 Integer Data Types

Integer data types can be specified as follows:

INTEGER
INTEGER([KIND=]n)
INTEGER*n

n
Is kind 1, 2, 4, or 8.

If a kind parameter is specified, the integer has the kind specified. If a kind parameter is not specified, integer constants are interpreted as follows:

• If the integer constant is within the default integer kind range, the kind is default integer.

• If the integer constant is outside the default integer kind range, the kind of the integer constant is the smallest integer kind which holds the constant.

Integer Constants

An integer constant is a whole number with no decimal point. It can have a leading sign and is interpreted as a decimal number.

Integer constants take the following form:

[s]n[n...][ _k]

s
Is a sign; required if negative (-), optional if positive (+).

n
Is a decimal digit (0 through 9). Any leading zeros are ignored.

k
Is the optional kind parameter: 1 for INTEGER(1), 2 for INTEGER(2), 4 for INTEGER(4), or 8 for INTEGER(8). It must be preceded by an underscore ( _ ).

An unsigned constant is assumed to be nonnegative.

Integers are expressed in decimal values (base 10) by default. To specify a constant that is not in base 10, use the following syntax:

[s][[base] #]nnn...

s
Is an optional plus (+) or minus (-) sign.

base
Is any constant from 2 through 36.

If base is omitted but # is specified, the integer is interpreted in base 16. If both base and # are omitted, the integer is interpreted in base 10.

For bases 11 through 36, the letters A through Z represent numbers greater than 9. For example, for base 36, A represents 10, B represents 11, C represents 12, and so on, through Z, which represents 35. The case of the letters is not significant.

Examples

The following examples show valid and invalid integer (base 10) constants:

 Valid `0` `-127` `+32123` `47_2` Invalid Explanation `9999999999999999999` Number too large. `3.14` Decimal point not allowed; this is a valid REAL constant. `32,767` Comma not allowed. `33_3` 3 is not a valid kind for integers.

The following integers (most of which are not base 10) are all assigned a value equal to 3,994,575 decimal:

``````
I     = 2#1111001111001111001111
m     = 7#45644664
J     = +8#17171717
K     = #3CF3CF
n     = +17#2DE110
L     = 3994575
index = 36#2DM8F
``````

You can use integer constants to assign values to data. The following table shows assignments to different data and lists the integer and hexadecimal values in the data:

``````
Fortran Assignment    Integer Value in Data    Hexadecimal Value in Data

LOGICAL(1)X
INTEGER(1)X``````

``````X = -128                         -128                 Z'80'
X =  127                          127                 Z'7F'
X =  255                           -1                 Z'FF'

LOGICAL(2)X
INTEGER(2)X``````

``````X = 255                           255                 Z'FF'
X = -32768                     -32768                 Z'8000'
X = 32767                       32767                 Z'7FFF'
X = 65535                          -1                 Z'FFFF'
``````