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)
orを使用すると、integer
The difference is 25164150
出力として。これは、フラグの有無にかかわらず、gfortran でのみ発生します (私の ifort は、対処すべき別の問題である-m64
を受け入れないようですが、 のスペースを含む出力を返します)。kind=16
integer(8)
なぜこれが起こるのか誰にも分かりますか?