【问题标题】:Expected right parenthesis in expression at (1)(1) 处表达式中的预期右括号
【发布时间】:2017-03-29 00:24:07
【问题描述】:

Fortran 编译器报错

Expected right parenthesis in expression at (1)

什么意思?

program energy
real::Es=0.4,Ep=-0.4,ts=0.2,tsp=2.0
integer::Nx=100
real::kx(101)
real::ky

kx(1)=-0.50
do i=1,Nx
  kx(i+1)=kx(1)+i*(1.00/Nx)
end do

print*, 'Enter value for ky'
read*,ky

do i=1,101
  ! "The error mentions it in the next line in terminal"
  Epos(i)=sqrt(-Es*(Ep+2*ts*(cos(kx(i))+cos(ky)))-(2*ts*(cos(kx(i))+cos(ky))*(Ep-2*ts*(cos(kx(i))+cos(ky))))+(4*tsp**2)*((sin(kx(i)))**2 +(sin(ky))**2)))
end do

write(*,*) Epos
end program energy

【问题讨论】:

  • 您好,欢迎来到 SO。在询问版本特定问题时,请使用标签 fortran90fortran95。通常,您不需要更多。
  • 当然,下次我会多加通知。谢谢。

标签: fortran gfortran


【解决方案1】:

您的行太长...您可以为gfortran 指定-ffree-line-length-0 以取消限制,或者(我更喜欢)使用& 换行:

  Epos(i)=sqrt( - Es*(Ep+2*ts*(cos(kx(i))+cos(ky))) &
                - (2*ts*(cos(kx(i))+cos(ky))*(Ep-2*ts*(cos(kx(i))+cos(ky)))) &
                + (4*tsp**2)*((sin(kx(i)))**2 +(sin(ky))**2) )

您的代码还有两个问题:

  • 一个右括号太多
  • 缺少Epos 的声明

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-20
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多