Sou*_*mya 3 fortran intel-fortran
样本循环:
do i=1,1
print *,i
enddo
print *,i
Run Code Online (Sandbox Code Playgroud)
给了我2最终的价值i.我如何设置英特尔Fortran的Visual Studio在Windows上给我的最终价值1的i?
这是Fortran循环工作数十年的方式,您不能简单地使用编译器选项进行更改.Fortran标准明确指出:
8.1.4.4.1循环启动
(2)DO变量用初始参数m 1的值定义.
(3)建立迭代计数,并且是表达式的值
MAX (INT ((m2 – m1 + m3) / m3), 0)
这里m 1,m 2和m 3是循环控制中的三个参数:[,] var = m1,m2[,m3]给定你的例子i=1,1(m 3隐含地1如果省略),迭代计数是MAX(INT((1-1+1)/1),0)评估的1,即循环应该执行一次.根据(2)i初始化1.
8.1.4.4.2执行周期
DO构造的执行周期包括以下步骤,这些步骤重复执行直到终止:
(1)测试迭代计数(如果有的话).如果迭代计数为零,则循环终止并且DO构造变为非活动状态.如果循环控制是
[ , ] WHILE (scalar-logical-expr),所述标量logicalexpr被评估; 如果此表达式的值为false,则循环终止,DO构造变为非活动状态.因此,如果共享do-term-shared-stmt的所有DO构造都处于非活动状态,则完成所有这些构造的执行.然而,如果共享do-term-shared-stmt的一些DO构造是活动的,则继续执行其DO语句最近执行的活动DO构造的执行周期的步骤(3).
Fortran测试剩余的迭代计数是否大于零,而不是DO变量小于(大于)结束值.
(2)如果迭代计数非零,则执行循环的范围.
(3)迭代计数(如果有的话)减1.DO变量(如果有的话)增加增量参数m 3的值.
当循环的迭代正在执行时,DO变量总是递增.因此,在第一次执行i变得增加后1,评估为2.
除了在步骤(3)中发生的DO变量的增量之外,DO变量在DO构造处于活动状态时既不必重新定义也不必变为未定义.
8.1.4.4.4环路终端
当DO构建变为非活动时,DO构造的DO变量(如果有的话)保留其最后定义的值.
最后定义的值是2.因此,在DO循环结束后,i等于2.
我已经从ISO/IEC 1539:1991(又名Fortran 90)中删除了文本,但是也可以在ISO/IEC 1539:1980(又名ANSI X3J3/90.4又名FORTRAN 77)的§11.10.3中找到相同的文本. ; WHILE没有在F77中存在的东西)以及ISO/IEC 1539-1:2010(又名Fortran 2008)的§8.1.6.6.
| 归档时间: |
|
| 查看次数: |
1890 次 |
| 最近记录: |