"无法分配给命名常量"(重新分配变量)

jam*_*625 2 fortran gfortran

我正在使用标志f进行一些错误检查.当我想要进行另一次检查时,Fortran(或者gfortran)不会让我重新分配它的价值.

integer, dimension(:,:), allocatable :: A
integer :: f, n        

write (*, *) "Give an integer n > 0. n = "

   read (*, IOSTAT=f) n

   do while(f /= 0)
      print *, "Error with input. Please try again."
      read (*, IOSTAT=f) n
   end do

   write (*, "(a, i5)") "You have entered n = ", n

   allocate(A(n), STAT=f)
   if (f /= 0) 
      print *, "Error: not enough memory for A."
   end if
Run Code Online (Sandbox Code Playgroud)

注意:我认为复制粘贴可能会弄乱我的间距.

f已被宣布为一个整数(而不是作为一个参数整数): integer :: f.

我是Fortran的初学者,所以我很可能犯了一些不可思议的错误!

Vla*_*r F 5

此错误消息令人困惑,但问题是

   if (f /= 0) 
      print *, "Error: not enough memory for A."
   end if
Run Code Online (Sandbox Code Playgroud)

应该

   if (f /= 0) then
      print *, "Error: not enough memory for A."
   end if
Run Code Online (Sandbox Code Playgroud)