### 5.1 KIND Type Parameters

The `KIND` type parameters supported by GNU Fortran for the primitive data types are:

`INTEGER`
  1, 2, 4, 8*, 16*, default: 4 (1)
`LOGICAL`
  1, 2, 4, 8*, 16*, default: 4 (1)
`REAL`
  4, 8, 10*, 16*, default: 4 (2)
`COMPLEX`
  4, 8, 10*, 16*, default: 4 (2)
`CHARACTER`
  1, 4, default: 1

* = not available on all systems
(1) Unless -fdefault-integer-8 is used
(2) Unless -fdefault-real-8 is used

The `KIND` value matches the storage size in bytes, except for `COMPLEX` where the storage size is twice as much (or both real and imaginary part are a real value of the given size). It is recommended to use the `SELECTED_CHAR_KIND`, `SELECTED_INT_KIND` and `SELECTED_REAL_KIND` intrinsics or the `INT8`, `INT16`, `INT32`, `INT64`, `REAL32`, `REAL64`, and `REAL128` parameters of the `ISO_FORTRAN_ENV` module instead of the concrete values. The available kind parameters can be found in the constant arrays `CHARACTER_KINDS`, `INTEGER_KINDS`, `LOGICAL_KINDS` and `REAL_KINDS` in the `ISO_FORTRAN_ENV` module (see ISO_FORTRAN_ENV).