
今、FORTRANでg95でプログラムを作っているのですが、動的割り当てで理解出来ない現象が起きたので質問させていただきます。
real(8),dimension(:,:,:),allocatable :: a
と三次元の動的配列aを定義し
allocate(a(0:10,0:10,0:10))
としています。
ここで、外部のファイルから各成分0~10の配列の所に値を読み込ませます。
私の理解では、これは0~10の添字までしか扱えないものと思っていたのですが、write文でa(11,11,11)という要素を書かせてみると、実際に値が出力されてしまいます。動的割り当てとはそういうものなのでしょうか。
また現在作っているプログラムではこれが値を持っているとまずいので、doループで11の値のところだけをif文で0にしようと試みたのですが、そのif文を反映してくれません。
(つまり
do i=0.11
do j=0,11
do k=0,11
if (i==11.or.j==11.or.k==11) then
.・・・
の時、・・・のところで0にしようしてもそれが反映されない)
始めはコードが間違っているのかと思いましたが、doループの10の値のところを同様に0にしてみたら成り立っていました。
(つまり
do i=0,10
do j=0,10
do k=0,10
if (i==10.or.j==10.or.k==10) then
・・・
の時、・・・のところで0にしようとするとそれが反映される)
これはやはり定義してないa(11,11,11)が出力されることと関係があるのでしょうか。
初歩的な質問かもしれませんが、よろしくお願い致します。
No.1ベストアンサー
- 回答日時:
要するに、範囲を超えて指定するのは自己責任。
想定外なら、単なるプログラミングミスということで。
ちなみにこういうのも:
$$ cat -n a.f95
1 program hello_world
2 implicit none
3 integer, dimension(:), allocatable :: a
4 allocate( a(0:10) )
5 print *, "hello, world.", a( 11 )
6 end program hello_world
$ f95 -fbounds-check a.f95
$ ./a.out
At line 5 of file a.f95
Fortran runtime error: Array reference out of bounds for array 'a', upper bound of dimension 1 exceeded (11 > 10)
hello, world.$
$
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フローチャートで 変数に代入す...
-
ファイルの開き方
-
あるプログラムのコマンドライ...
-
正しい五十音順について
-
65536は2の何乗なのでしょうか?
-
VBAにてメール作成した際、一部...
-
VBAで仕様書は書きますか?
-
Vba UserFormを前面に出す方法...
-
寿命
-
COBOLでBLOCK CONTAINS句につい...
-
OS入ってる機器のソフト・アプ...
-
変化させるセルが変化しない
-
空elseの有無
-
C++でアボート(Abort)で処理が...
-
自動クエリとはどういうもので...
-
グループを均等に分けるには?...
-
「Outlookが他のプログラムによ...
-
Bluestacks内でダウンロードし...
-
Excelに埋め込んだVBAのプログ...
-
Photoshopで、できますか?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フローチャートの菱形が狭い。。。
-
フローチャートで 変数に代入す...
-
pythonプログラム
-
フローチャートで。
-
フローチャートが書けません
-
さっぱり分かりません。フロー...
-
二分法(FORTRAN)
-
連立1次方程式を計算するFortra...
-
プログラムのロジックをノート...
-
Delphiで配列をファイルに出力...
-
フローチャートを書きたい
-
学校でフローチャートって教わ...
-
for文のフローチャート
-
サブルーチンのフローチャート...
-
正しい五十音順について
-
ファイルの開き方
-
65536は2の何乗なのでしょうか?
-
VBAで仕様書は書きますか?
-
あるプログラムのコマンドライ...
-
OS入ってる機器のソフト・アプ...
おすすめ情報