我非常好奇如何打印以下第3行或者至少为什么它不是垃圾值:
PROGRAM b
INTEGER:: A(2,2) = reshape((/1,2,3,4/),(/2,2/))
PRINT*, A(1,:)
PRINT*, A(2,:)
PRINT*, A(3,:)
END PROGRAM b
我的结果是:
1 3
2 4
3 66825
我真的很感谢你的帮助。提前谢谢。
答案 0 :(得分:0)
你的66825是垃圾值!即使你只有0,它仍然是一个未定义的行为,可能导致糟糕的结果或崩溃您的程序(甚至启动WWIII)。不要这样做。使用编译器提供的功能来检查数组边界和其他类似的东西:
gfortran -fcheck=all
ifort -check
等等。
您还可以在Linux上使用valgrind来查看未定义的值以及内存中无效的读写操作。