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

Fortran 90/95中能否用A(-1)取数组最后元素?替代A(N)的方法

Fortran 90/95 获取数组最后一个元素的方法

嗨,刚好对Fortran的数组索引这块熟得很——在Fortran 90/95里,没法直接像Python那样用A(-1)获取数组最后一个元素。原因很简单:Fortran的数组索引范围是完全自定义的,你可以声明成默认的integer :: A(5)(索引1到5),也可以搞成integer :: A(-3:2)(索引从-3到2),这时候A(-1)只是数组里的中间元素,跟“最后一个”完全不沾边。

那除了直接写死最后一个索引值N用A(N)之外,还有这些更灵活的方法:

  • 使用size()函数:size(A)会返回数组的总元素数,对于一维数组,直接用A(size(A))就能拿到最后一个元素。示例代码:

    integer :: A(5) = [1,2,3,4,5]
    print *, A(size(A))  ! 输出5
    

    如果是多维数组,记得指定维度参数,比如二维数组A(3,4),要取第二维的最后一列元素,就写A(:, size(A,2))。

  • 使用ubound()函数:这个函数返回数组指定维度的上界(也就是该维度的最大索引值),比size()更精准,尤其适合那些不是从1开始索引的数组。示例:

    integer :: A(-2:3) = [10,20,30,40,50,60]
    print *, A(ubound(A,1))  ! 输出60,因为这个数组的第一维上界是3
    

    多维数组的话,比如A(-1:2, 0:5),要取第一维最后一个、第二维最后一个的元素,就写A(ubound(A,1), ubound(A,2))。

  • 自定义封装函数(进阶玩法):如果你经常需要取最后一个元素,可以写个小函数封装起来,用起来更顺手:

    function last_element(arr) result(res)
        integer, intent(in) :: arr(:)
        integer :: res
        res = arr(ubound(arr,1))
    end function last_element
    
    ! 调用示例
    integer :: A(5) = [1,2,3,4,5]
    print *, last_element(A)  ! 输出5
    

    这个版本只支持一维数组,要是需要支持多维,可以给函数加个维度参数扩展一下。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:35:02