Re: uninitialized variable
西松と申します.
>>>>> 久野さん:
>
> candy@xxx.kgc.co.jpさん:
> > FOTRAN で、どこでも宣言してない変数を参照した場合、
> > その初期値というのは決まっているのでしょうか?
> >
> > 例えばいきなり i とかいう変数を参照すると、
> > その値はどうなりますか?
>
> 「不定」ですね。コンパイラによっていくつになるか分からないしメモリ上のゴ
> ミの値になるかも分からないし検出してエラーにされるかも分からない。
> と書かれてます。つまりとにかく何が起きるか分からない。
蛇足ながら補足しますと,
* Fortranといえども implicit none してからちゃんと変数の宣言をしましょう.
* 初期化しないうちに参照するエラーはコンパイラの警告で見つけることができます.
* 大昔に書かれたFORTRANのコードの中にはさらに, subroutineの中の
ローカルな変数にあたかもSAVE属性があることを仮定しているものが
あります.
* このようなバグはコンパイラオプションで最適化をしてはじめて顕在化
することがあります.
diamond02 360% cat iii.f90
! i.f90 -*-f90-*-
!!
program iii
implicit none
integer i
write(6,*) i
end program iii
diamond02 361% g95 -Wall -o iii iii.f90
In file iii.f90:5
integer i
1
Warning (113): Variable 'i' at (1) is used but not set
diamond02 362% ./iii
134634776
diamond02 363%
> 手元の本(S.J.Chapman, Fortran 90/95 for Scientists and
> Enginners, ISBN0-07-116136-8)でちょっと見てみましたが、
この本はおすすめでしょうか.
--
love && peace && free_software
西松 タケシ
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735