Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fortran中1处的意外语句函数_Fortran_Fortran77 - Fatal编程技术网

Fortran中1处的意外语句函数

Fortran中1处的意外语句函数,fortran,fortran77,Fortran,Fortran77,我是Fortran新手,写这个小程序是为了写出一个圆的100个有序对 但是我得到了上面提到的错误,我不知道如何解决 implicit real*8(a-h,o-z) parameter(N=100) parameter(pi = 3.14159265358979d0) integer*8 k dtheta=2*pi/N r=1.0d0 x00=0.0d0 y00=0.0d0 do k=0,N-1 xb(k)=r*cos(k*dtheta)-x00

我是Fortran新手,写这个小程序是为了写出一个圆的100个有序对

但是我得到了上面提到的错误,我不知道如何解决

  implicit real*8(a-h,o-z)
  parameter(N=100)
  parameter(pi = 3.14159265358979d0)
  integer*8 k


  dtheta=2*pi/N
  r=1.0d0
  x00=0.0d0
  y00=0.0d0
  do k=0,N-1
   xb(k)=r*cos(k*dtheta)-x00
   yb(k)=r*sin(k*dtheta)-y00
  enddo

  open(64,file='xbyb.m',status='unknown')
  write(64,*) (xb(k),k=0,N-1),(yb(k),k=0,N-1)

  close(64)
  end

您没有声明数组
xb
yb

虽然从技术上讲不是FORTRAN 77,但我仍然建议使用
隐式无
或至少使用等效的编译器选项来强制显式声明所有内容。隐式类型是邪恶的,会导致bug

正如High Performance Mark所提醒的,语法

  f(k) = something
声明一个称为语句函数的功能(在Fortran 95及更高版本中现已过时)。它声明了一个具有一个参数
k
的函数。编译器识别数组引用的唯一方法是正确声明数组。编译器抱怨语句函数意外,因为声明必须放在可执行语句之前

不管怎样,
write
语句中隐含的do循环是Fortran 90,因此在21世纪不需要坚持使用Fortran 77

其他提示:
status='unknown'
是冗余的,这是默认设置,只需将其忽略即可。
您只需编写
r=1
x00=0
就可以了,您不需要声明数组
xb
yb

虽然从技术上讲不是FORTRAN 77,但我仍然建议使用
隐式无
或至少使用等效的编译器选项来强制显式声明所有内容。隐式类型是邪恶的,会导致bug

正如High Performance Mark所提醒的,语法

  f(k) = something
声明一个称为语句函数的功能(在Fortran 95及更高版本中现已过时)。它声明了一个具有一个参数
k
的函数。编译器识别数组引用的唯一方法是正确声明数组。编译器抱怨语句函数意外,因为声明必须放在可执行语句之前

不管怎样,
write
语句中隐含的do循环是Fortran 90,因此在21世纪不需要坚持使用Fortran 77

其他提示:
status='unknown'
是冗余的,这是默认设置,只需将其忽略即可。
你可以写
r=1
x00=0

对不起,我觉得FORTRAN和这个问题非常有趣。。。我想我明白了,编译器很难将xb和yb引用理解为数组,并认为它们可能是一种古老的功能,称为“语句函数”。。。。但错误消息中还有一个谜团:“为什么语句函数为1”是意外的?我的意思是它显然不是第#1行?@Travis语句函数不能出现在那里。它必须放在类型和变量声明之后。顺便说一句,近30年来它一直被称为Fortran,而不是Fortran。我观察到的不是错误消息的主题,而是位置。消息本身充其量也不清楚在哪里遇到了问题。“1处的语句函数意外”?“at 1”是什么意思?为什么编译器认为它在“at 1”遇到了这个问题?对于像FORTRAN这样的分析型语言,或者如果你坚持的话,我想我希望它更准确,或者至少更具体地描述它遇到的问题。@Travis这就是所有gfortran,或者甚至所有GCC错误消息的工作原理。错误消息中引用了一行,下面是数字1,它标记了该行中的特定列。它的字面意思是“在1”而不是“在1行”对不起,我发现FORTRAN和这个问题非常有趣。。。我想我明白了,编译器很难将xb和yb引用理解为数组,并认为它们可能是一种古老的功能,称为“语句函数”。。。。但错误消息中还有一个谜团:“为什么语句函数为1”是意外的?我的意思是它显然不是第#1行?@Travis语句函数不能出现在那里。它必须放在类型和变量声明之后。顺便说一句,近30年来它一直被称为Fortran,而不是Fortran。我观察到的不是错误消息的主题,而是位置。消息本身充其量也不清楚在哪里遇到了问题。“1处的语句函数意外”?“at 1”是什么意思?为什么编译器认为它在“at 1”遇到了这个问题?对于像FORTRAN这样的分析型语言,或者如果你坚持的话,我想我希望它更准确,或者至少更具体地描述它遇到的问题。@Travis这就是所有gfortran,或者甚至所有GCC错误消息的工作原理。错误消息中引用了一行,下面是数字1,它标记了该行中的特定列。它的字面意思是“在1”而不是“在1行”