Fortran Coder

查看: 6402|回复: 4
打印 上一主题 下一主题

[流程控制] fortran 循环调用数组值时为什么会超过数组上界

[复制链接]

17

帖子

7

主题

0

精华

入门

F 币
78 元
贡献
44 点
跳转到指定楼层
#
发表于 2020-3-9 20:56:51 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
用循环语句调用数组XX(4)的值,为什么最后会显示循环变量I变成5导致数组XX超过定义的上界?但我在测试程序test中却没有发现相同现象,想请教下这是什么情况

QQ截图20200309205505.jpg (34.94 KB, 下载次数: 187)

QQ截图20200309205505.jpg

QQ截图20200309205102.jpg (23.55 KB, 下载次数: 200)

QQ截图20200309205102.jpg

QQ截图20200309205133.jpg (51.88 KB, 下载次数: 202)

QQ截图20200309205133.jpg
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

268

帖子

0

主题

0

精华

版主

World Analyser

F 币
749 元
贡献
526 点

新人勋章美女勋章元老勋章热心勋章规矩勋章管理勋章

QQ
地板
发表于 2020-3-10 09:29:40 | 只看该作者
本帖最后由 kyra 于 2020-3-10 09:30 编辑

integer,parameter :: N = floor(L/ls)
ls = 0.545, L= 100

所以 N = 183
real,parameter :: xx(4)=(/x00, x00+2*lt, x00+2*lc, x00+2*(lc+lt)/)
xx的大小是4

  do I1 = 1,NM
    do J1 = 1,N
      Zpp(I1,J1)= ((2/(mr*L))**0.5)*sin(I1*pi*xx(J1)/L)!//此处J1循环到N,当循环到5时,xx越界(因为xx大小为4)
    end do
  end do

17

帖子

7

主题

0

精华

入门

F 币
78 元
贡献
44 点
板凳
 楼主| 发表于 2020-3-9 22:53:24 | 只看该作者
vvt 发表于 2020-3-9 22:11
请给出所有代码。(复制粘贴,不截图)

源代码已上传,,,,,,

17

帖子

7

主题

0

精华

入门

F 币
78 元
贡献
44 点
沙发
 楼主| 发表于 2020-3-9 22:52:17 | 只看该作者
本帖最后由 kyra 于 2020-3-10 09:31 编辑

[Fortran] 纯文本查看 复制代码
01include "link_fnl_shared.h"
02    
03module constant
04  implicit none
05  real,parameter :: pi = 3.1415926
06  real,parameter :: lc=9, lt=1.2, ls = 0.545, L= 100, x00=10,mr=60.64
07  real,parameter :: xx(4)=(/x00, x00+2*lt, x00+2*lc, x00+2*(lc+lt)/)
08  integer,parameter :: NM = 120 ,dof_c=10
09  integer,parameter :: N = floor(L/ls), DOF=dof_c+NM+2*N
10   
11   contains
12   
13  subroutine Zp_Zw(Zpp,Zww)
14  implicit none
15  integer :: I,J,I1,J1
16  real(kind=4) :: Zpp(NM,N),Zww(NM,4)
17   
18  do I = 1,NM
19    do J = 1,4
20      Zww(I,J)=((2/(mr*L))**0.5)*sin(I*pi*xx(J)/L)
21    end do
22  end do
23  do I1 = 1,NM
24    do J1 = 1,N
25      Zpp(I1,J1)= ((2/(mr*L))**0.5)*sin(I1*pi*xx(J1)/L)
26    end do
27  end do
28 
29  end subroutine                  
30  end module constant
31   
32Program test_IMSL
33  use constant
34  use operation_x
35  implicit none
36  real(kind=4) :: Zp(NM,N),Zw(NM,4)
37 
38  call Zp_Zw(Zp,Zw)
39 
40  pause
41  end program

955

帖子

0

主题

0

精华

大师

F 币
188 元
贡献
77 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
楼主
发表于 2020-3-9 22:11:01 | 只看该作者
请给出所有代码。(复制粘贴,不截图)
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2025-5-1 15:16

Powered by Discuz! X3.4

© 2013-2025 Comsenz Inc.

快速回复 返回顶部 返回列表