我注意到,如果我使用integer(16)
变量,当我使用 时print
,输出包含预期的确切空格数。因此,当我使用时(有些人可能会在这里识别出项目欧拉问题)
implicit none
integer(16)::sum_sq,sq_sum,diff,i
sum_sq=0;sq_sum=0;
do i=1,100
sum_sq=sum_sq+i*i
sq_sum=sq_sum+i
enddo
diff=abs(sq_sum**2-sum_sq)
print *, "The difference is", diff
我明白了
The difference is 25164150
作为输出,但是当我使用integer(8)
orinteger
作为变量时,我得到
The difference is 25164150
作为输出。这发生在有和没有-m64
标志的情况下,并且仅在 gfortran 上发生(我的 ifort 似乎不接受kind=16
,这是一个需要处理的单独问题,但返回带有空格的输出integer(8)
)。
有谁知道为什么会这样?