我经常看到人们使用该OPEN语句而不明确指定STATUS. 在 Fortran 90 和 2008 标准中,这样说STATUS:
如果指定 UNKNOWN,则状态取决于处理器。如果省略此说明符,则默认值为 UNKNOWN。
我将此解释为,如果STATUS省略,任何事情都可能发生,具体取决于您使用的机器。
然而,从进行一些测试来看,默认行为(当STATUS省略时)似乎是REPLACE. 但我找不到 gfortran 编译器手册(来自https://gcc.gnu.org/onlinedocs/)中记录的这种行为。
问题:这REPLACE确实是 gfortran 和 ifort 等流行编译器的默认行为吗?如果是这样,这实际上有记录吗(但我只是碰巧没有找到它)?
这两个编译器有什么区别,mpif90和mpifort?两者似乎都适用于Fortran 90代码.我在Linux上安装openMPI时都安装了.用法(编译器选项)是否不同?
我选择语言 - > S - > Shell作为我正在查看/编辑的Linux shell脚本.有些部分有这种红色字体和蓝色背景,这对我来说很难阅读.为了改变这种情况,我去了Settings - > Style Configurator,但令我沮丧的是"Shell"没有被列为其中一种语言.
为什么"壳牌"没有列出?
如果未列出"Shell",如何更改"Shell"的颜色方案?
如何找到用红色字体和蓝色背景/突出显示标记的文本?
设A是DIMENSION(m,n,p)的多维数组.Fortran允许A(使用单个索引)的线性索引吗?如果是这样,线性指数和多维指数之间的对应关系是什么?
换句话说,是允许A(i),A(i)对应哪个元素(以什么顺序是遍历的维度)?
我一直试图弄清楚这两行代码的含义:
TYPE(DGRID),TARGET,ALLOCATABLE :: DGRIDS(:)
Run Code Online (Sandbox Code Playgroud)
...
JEK => DGRIDS(IMOD)%JEK
Run Code Online (Sandbox Code Playgroud)
我正在使用代码块,IMOD以绿色字体显示,这似乎表明IMOD是一个内在函数.我理解第二行是设置指针,但我无法弄清楚为什么内在函数存在.我也不清楚如何使用JEK两次 - 第二行中的两个"JEK"是指不同的实体吗?
说Pokemon是一堂课.请考虑以下代码段:
Pokemon Eve(4,3); //call to constructor, creating first object on the stack
Eve=Pokemon(3,5); //call to constructor again, creating a second object on the stack
Run Code Online (Sandbox Code Playgroud)
两个对象都在堆栈上创建.执行第二行后,无法再访问第一个对象(带参数4,3).怎么了?用于描述此过程的术语是什么?垃圾收集?