【发布时间】:2012-10-08 06:41:32
【问题描述】:
我正在制作一个将十进制整数转换为其二进制表示的程序。这是我的代码:
program test
implicit none
integer, dimension(:), allocatable :: binary
integer :: decimalnum, i, initvalue
print*, "Enter decimal number to convert: "
read*,initvalue
decimalnum = initvalue
i = 0
do while (decimalnum > 0)
if (MOD(decimalnum,2)==0) then
binary(i) = 0 ! this is as far as the program executes up to
decimalnum = decimalnum / 2
i = i + 1
else if (MOD(decimalnum,2)==1) then
binary(i) = 1
decimalnum = (decimalnum -1) / 2
i = i + 1
end if
end do
end program test
在标记点,它返回错误Segmentation fault并以代码139退出。
为什么会这样?
提前致谢。
【问题讨论】:
-
您可以访问
debug吗?这样的gdb -
不,我不知道怎么用。
-
我对 Fortran 了解不多,但我只是查找了“可分配”,看起来您仍然需要“分配”语句来实际保留空间。
-
我将该行更改为
allocate(binary(i) = 0),但编译器返回syntax error in allocate statement -
另外:数组从索引 1 开始。