我注意到,如果我使用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))。
有谁知道为什么会这样?