int到string,FORTRAN的字符大小应该是多少

int到string,FORTRAN的字符大小应该是多少,fortran,Fortran,下面的程序在运行时出错 program exmple implicit none character(len=10)::FT write(FT,*)int(0.75*100) end 这就产生了错误 输出语句溢出记录,单元-5,文件内部列表定向写入 为了消除错误,我需要len=12或更大。我的问题是为什么?什么决定了int到string所需的长度 如果有用,我将使用ifort v 14.0.2进行编译 什么决定了int到string所需的长度 如果未

下面的程序在运行时出错

    program exmple
    implicit none
    character(len=10)::FT

    write(FT,*)int(0.75*100)

    end
这就产生了错误

输出语句溢出记录,单元-5,文件内部列表定向写入

为了消除错误,我需要len=12或更大。我的问题是为什么?什么决定了int到string所需的长度

如果有用,我将使用ifort v 14.0.2进行编译

什么决定了int到string所需的长度

如果未指定格式,则它依赖于编译器。要了解您的特定编译器,只需打印并检查输出(在我的ifort 18中也是12)

无论如何,你不应该在这个行为中计算,因为它根本不可移植。如果可行,请使用格式化输出

编辑:只是提示编译器如何选择未格式化整数的长度。默认整数(通常为4字节)的最大可表示整数为
2^31-1=2147483647
,这是一个10位数字。为一个可能的减号信号再加一个字符,再加一个空格将其与上一条记录分开,得到12

什么决定了int到string所需的长度

如果未指定格式,则它依赖于编译器。要了解您的特定编译器,只需打印并检查输出(在我的ifort 18中也是12)

无论如何,你不应该在这个行为中计算,因为它根本不可移植。如果可行,请使用格式化输出


编辑:只是提示编译器如何选择未格式化整数的长度。默认整数(通常为4字节)的最大可表示整数为
2^31-1=2147483647
,这是一个10位数字。为一个可能的减号信号再添加一个字符,并将其与上一条记录分隔开一个空格,则得到12。

根据Fortran 2008标准第10.10.4节(列表定向输出)注释10.33,当未指定格式时

输出记录的长度未指定,取决于处理器

这涉及到外部和内部文件

我建议在以下条件下将整数写入字符串时使用
'(i0)
作为格式:根据标准第10.7.2.1节第1(5)段

在输出时,通过I、B、O、Z、F和G编辑,字段宽度w的指定值可能为零。在这种情况下,处理器选择最小的正实际字段宽度,该宽度不会导致字段中填充星号


根据Fortran 2008标准第10.10.4节(列表定向输出)注释10.33,未指定格式时

输出记录的长度未指定,取决于处理器

这涉及到外部和内部文件

我建议在以下条件下将整数写入字符串时使用
'(i0)
作为格式:根据标准第10.7.2.1节第1(5)段

在输出时,通过I、B、O、Z、F和G编辑,字段宽度w的指定值可能为零。在这种情况下,处理器选择最小的正实际字段宽度,该宽度不会导致字段中填充星号


这取决于单个编译器。如果您想避免这种情况,可以使用显式格式,例如write(FT),(I10)”,int(..),同时与@tim18一致,默认整数几乎肯定是32位,包括符号;这样一个整数的极值需要10个十进制数字加上符号,虽然我不知道ifort,但列表定向格式通常会在每条记录的开头输出一个空格,因为历史上许多Fortran处理器使用/保留每条记录的第一个字符用于回车控制。10+1+1=12。@dave_thompson_085,ifort应该放置初始空格:这是标准要求的。@francescalus噢,看在上帝的份上,这不是链接问题的重复。请取消保留,以便给出答案。@user5713492,请解释为什么您认为该问题与我链接的问题无关。即使你不能说服我,也欢迎其他人投票重新打开。这取决于个人编译器。如果您想避免这种情况,可以使用显式格式,例如write(FT),(I10)”,int(..),同时与@tim18一致,默认整数几乎肯定是32位,包括符号;这样一个整数的极值需要10个十进制数字加上符号,虽然我不知道ifort,但列表定向格式通常会在每条记录的开头输出一个空格,因为历史上许多Fortran处理器使用/保留每条记录的第一个字符用于回车控制。10+1+1=12。@dave_thompson_085,ifort应该放置初始空格:这是标准要求的。@francescalus噢,看在上帝的份上,这不是链接问题的重复。请取消保留,以便给出答案。@user5713492,请解释为什么您认为该问题与我链接的问题无关。即使你不能说服我,也欢迎其他人投票重新开放。