Next: Thread-safety of the runtime library, Previous: KIND Type Parameters, Up: Compiler Characteristics
The Fortran standard does not specify how variables of LOGICAL
type are represented, beyond requiring that LOGICAL
variables
of default kind have the same storage size as default INTEGER
and REAL
variables. The GNU Fortran internal representation is
as follows.
A LOGICAL(KIND=N)
variable is represented as an
INTEGER(KIND=N)
variable, however, with only two permissible
values: 1
for .TRUE.
and 0
for
.FALSE.
. Any other integer value results in undefined behavior.
Note that for mixed-language programming using the
ISO_C_BINDING
feature, there is a C_BOOL
kind that can
be used to create LOGICAL(KIND=C_BOOL)
variables which are
interoperable with the C99 _Bool type. The C99 _Bool type has an
internal representation described in the C99 standard, which is
identical to the above description, i.e. with 1 for true and 0 for
false being the only permissible values. Thus the internal
representation of LOGICAL
variables in GNU Fortran is identical
to C99 _Bool, except for a possible difference in storage size
depending on the kind.