【问题标题】:Unclassifiable statement and other errors in an IF in FortranFortran 中的 IF 中的不可分类语句和其他错误
【发布时间】:2015-05-01 03:44:59
【问题描述】:

我有代码:

   if i < n then
        x = topsep(1)
        y = topsep(2)
        realvor(n,1) = x + dx
        realvor(n,2) = x + dy   
        imvor(n,1) = (realvor(n,1)*(a**2))/((realvor(n,1))**2+(realvor(n,2))**2)
        imvor(n,2) = (realvor(n,2)*(a**2))/((realvor(n,1))**2+(realvor(n,2))**2)
        tf = .TRUE.
    else 
        x = botsep(1)
        y = botsep(2)
        realvor(n,1) = x + dx
        realvor(n,2) = y - dy
        imvor(n,1) = (realvor(n,1)*(a**2))/((realvor(n,1))**2+(realvor(n,2))**2)
        imvor(n,2) = (realvor(n,2)*(a**2))/((realvor(n,1))**2+(realvor(n,2))**2)
        tf = .FALSE.
    endif

in 都定义为整数,我在 n = 1,100 的 do 循环中。这会引发以下错误:

错误:'if i 错误:“else”处 (1) 处出现意外的 ELSE 语句
错误:在“endif”处的 (1) 处需要 END DO 语句

我看不出这些错误来自哪里,无论我如何编写 if 语句(.NE. 等),它似乎都会抛出相同的东西。

【问题讨论】:

    标签: if-statement fortran fortran90 gfortran


    【解决方案1】:

    你忘记了括号!根据 Fortran 标准(2008 年,第 8.1.7.4 章),if 语句应为

    if ( i < n ) then
    

    【讨论】:

    • 谢谢!那行得通,我没有意识到 i 之前和 n 之后的空格是如此重要。
    • 空格无关紧要,括号很重要!
    • 是的,我的错,不得不习惯阅读终端中的错误!
    猜你喜欢
    • 1970-01-01
    • 2015-09-07
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多