You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Fortran可分配变量的值?解决赋值维度不匹配错误

Fortran可分配数组赋值错误的解决办法

你遇到的错误是因为array_save(i)是标量(单个整数,秩为0),而idx是一维数组(秩为1),Fortran不允许直接把数组赋值给标量,所以编译器报出"Incompatible ranks 0 and 1"的错误。

根据你的代码逻辑,每次pack操作返回的idx只会包含一个元素(因为array_char_ref和array_char_1的元素是一一对应的),所以只需要取idx的第一个元素赋值给array_save(i)即可,修改后的代码行如下:

array_save(i) = idx(1)

完整的修改后代码:

program use_value_allocatable

  implicit none
  integer :: i, ii
  integer, dimension(3) :: array_save
  character(1), dimension(3) :: array_char_ref = (/'a','b','c'/), array_char_1 = (/'c','a','b'/)
  integer, allocatable :: idx(:)

  array_save = 0
  do i = 1, 3
     idx = pack([(ii,ii=1,3)], array_char_ref == array_char_1(i) )

     print*, 'i=', i, ', idx=', idx, ', array_save(i) =', array_save(i)
     array_save(i) = idx(1)
     deallocate(idx)
  end do

end program use_value_allocatable

这样修改后,就能把idx中的唯一值正确存入array_save的对应位置了。

内容的提问来源于stack exchange,提问作者user790082

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 19:35:24