2017-09-17 4 views
0

le programme ci-dessous Tenir compteQuelles sont les constantes TRUE et FALSE (sans les périodes environnantes ('.')) Dans Fortran?

program 
    print*,.true.,.false. 
    print*,true,false 
end program 

Ce programme imprime des valeurs différentes dans pgfortan et gfortran.

pgfortran sortie

T F 
0.00000000  0.00000000 

gfortran sortie

T F 
4.59135442E-41 5.87982594E-39 

Question - Les constantes logiques .true. et .false. sont affichés correctement comme T et F. Mais quelles sont ces constantes true et false, où il n'y a pas . autour des constantes?

+4

Veuillez regarder les déclarations implicites "none" et implicite et vous verrez que TRUE et FALSE seront implicitement définies comme des variables REAL (et ici avec une valeur aléatoire car elles n'ont pas été initialisées). – albert

Répondre

5

Comme suggéré par albert, TRUE et FALSE n'ont pas de signification intrinsèque dans Fortran - ce ne sont que des identifiants ordinaires qui doivent être déclarés et assignés une valeur. Parfois, une application utilise un module avec un tas de déclarations fournies par le fournisseur et celles-ci peuvent inclure des déclarations de TRUE et FALSE en tant que constantes nommées, en particulier sur la plate-forme Windows.

Dans votre exemple, TRUE et FALSE sont des variables déclarées implicitement non initialisées. Comme ils ne sont pas initialisés, la valeur est indéfinie. Certaines implémentations peuvent donner une valeur zéro aux variables non initialisées, mais la plupart ne le font pas. Il vaut mieux ne pas mettre les valeurs par défaut à zéro, de sorte que vous soyez conscient des erreurs de programmation plus tôt.

Et tandis que nous sommes sur le sujet des valeurs LOGIQUES, je vais vous diriger vers an old post of mine on the subject.