gpt4 book ai didi

fortran - 使用常量参数调用函数时出现段错误

转载 作者:行者123 更新时间:2023-12-02 15:15:23 25 4
gpt4 key购买 nike

我用 Fortran 编写了这个非常简单的代码:

program su
implicit none
real ran3
write(*,*) ran3(0)
end program su

real*8 function ran3(iseed)
implicit none
integer iseed
iseed=iseed*153941+1
ran3=float(iseed)*2.328+0.5
end function ran3

我编译它没有问题,但是当我执行代码时,我收到此消息:

Program received signal SIGSEGV: Segmentation fault - invalid memory reference.

Backtrace for this error:
#0 0xB76BAC8B
#1 0xB76BB2DC
#2 0xB77BA3FF
#3 0x8048653 in ran3_
#4 0x80486B3 in MAIN__ at der.f90:?
Segmentation fault (core dumped)

您能告诉我原因以及如何解决吗?

最佳答案

我发现代码有两个问题。第一个是我认为是错误原因的一个。函数 ran3 使用常量 0 作为实际参数进行引用,但相应的虚拟参数 iseed 用于赋值的左侧函数中的语句。这是一个错误:您无法更改零值。

第二个错误是 ran3 返回一个 real*8 (无论它是什么;它是一个非标准声明),但在主程序中声明了 ran3作为默认的real

以下程序和函数使用 gfortran 4.7.2 编译。

program su    implicit none    real :: ran3    write(*, *) ran3(0)end program sufunction ran3(iseed)    implicit none    integer :: iseed, temp    real :: ran3    temp = iseed * 153941 + 1    ran3 = temp * 2.328 + 0.5end function ran3

关于fortran - 使用常量参数调用函数时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16457423/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com