codee-com/open-catalog

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

Open

#38 geöffnet am 24. Sept. 2024

Auf GitHub ansehen
 (2 Kommentare) (2 Reaktionen) (0 zugewiesene Personen)Fortran (12 Forks)auto 404
Fortrangood first issuenew check

Repository-Metriken

Stars
 (105 Stars)
PR-Merge-Metriken
 (PR-Metriken ausstehend)

Beschreibung

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'

Contributor Guide