codee-com/open-catalog

[Fortran] Replace `if (integer)` with `if (logical)`

Open

#38 ouverte le 24 sept. 2024

Voir sur GitHub
 (2 commentaires) (2 réactions) (0 assignés)Fortran (12 forks)auto 404
Fortrangood first issuenew check

Métriques du dépôt

Stars
 (105 stars)
Métriques de merge PR
 (Métriques PR en attente)

Description

In Fortran there is no equivalence between logical and integer variables, so 0 is not a replacement for .false., and 1 does not replace .true.. Yet, some compilers (ifort) will happily compile if (1).

Example:

if (0) write(*, *) 'Test is false'
if (1) write(*, *) 'Test is true'

A slightly more meaningful example

integer val
val = 1
if (val) write(*, *) 'Test is true'

This should be replaced by

integer val
val = 1
if (val > 0) write(*, *) 'Test is true'

Guide contributeur