首先,FORTRAN數組的索引下界預設情況下為1。
FORTRAN中的數組是按“列元素最佳化”的規則進行儲存的。C語言中的數組則是按照“行元素優先”的原則進行儲存,並且C語言中數組的下標下界固定是從0開始的。在FORTRAN中,使用DO迴圈進行高效數組操作的代碼寫法,可能是在C語言中恰恰是最低效的。
FORTRAN讀取檔案時,逐行讀取檔案內容,然後在記憶體中按列儲存。print 和write函數,按列輸出。
program test1<br /> integer temp, b(3,3), c(3,3)<br /> temp = 0<br /> do 20 i = 1, 3<br /> do 20 j = 1, 3<br /> temp = temp + 1<br /> b(i, j) = temp<br /> write(*, *) i, j, '----', b(i, j)<br /> 20 continue<br /> open(100, file = 'test.txt')<br /> write(100, *) ((b(i,j),i = 1, 3),j = 1,3)<br /> close(100)<br /> write(*,*) '###############################'<br /> open(101, file = 'test.txt')<br /> read(101, *)((c(i, j), i = 1, 3), j = 1, 3)<br /> close(101)<br /> do 21 i = 1, 3<br /> do 21 j = 1, 3<br /> write(*,*) i, j, '----', c(i, j)<br /> 21 continue<br />end program test1<br />
結果:
[root@c0108 test]# gfortran test1.f90 -o test<br />[root@c0108 test]# ./test<br /> 1 1 ---- 1<br /> 1 2 ---- 2<br /> 1 3 ---- 3<br /> 2 1 ---- 4<br /> 2 2 ---- 5<br /> 2 3 ---- 6<br /> 3 1 ---- 7<br /> 3 2 ---- 8<br /> 3 3 ---- 9<br /> ###############################<br /> 1 1 ---- 1<br /> 1 2 ---- 2<br /> 1 3 ---- 3<br /> 2 1 ---- 4<br /> 2 2 ---- 5<br /> 2 3 ---- 6<br /> 3 1 ---- 7<br /> 3 2 ---- 8<br /> 3 3 ---- 9<br />[root@c0108 test]# cat test.txt<br /> 1 4 7 2 5 8 3 6 9<br />