输出语句中的格式决定数据如何转换为文本。使用*时,处理器根据数据类型自动选择表示形式和间距;使用格式字符串时,程序通过编辑描述符明确规定输出结构。
两种格式
print *, output_list
print "(edit_descriptors)", output_list
- *表示列表导向格式,适合快速查看数据,但具体空格和数值表示不由程序精确规定。
- 显式格式由一对括号包围,括号中的编辑描述符按顺序处理输出列表中的数据。
- A处理字符数据,I0以容纳数值所需的最小宽度处理整数。
本文代码
! 列表导向格式自动安排布局,显式格式由程序指定布局。
program listDirectedAndExplicitFormatDemo
implicit none
integer :: componentCount
character(len=*), parameter :: componentName = "电阻"
componentCount = 42
print *, "元件:", componentName, " 数量:", componentCount
print "(A,A,A,I0)", "元件:", componentName, ",数量:", componentCount
end program listDirectedAndExplicitFormatDemo
编译运行
(base) hong@hongdeMacBook-Pro 033.listDirectedAndExplicitFormat % gfortran -Wall -Wextra -std=f2018 exampleListDirectedAndExplicitFormat.f90
(base) hong@hongdeMacBook-Pro 033.listDirectedAndExplicitFormat % ./a.out
元件:电阻 数量: 42
元件:电阻,数量:42
现象分析
第一行使用列表导向格式。处理器自动为整条记录添加前导空格,并为整数42安排了较宽的字段。这种布局便于临时输出,但不适合要求固定形式的文本。
第二行中的A,A,A,I0依次对应三个字符表达式和一个整数表达式。字符内容连续输出,I0只占用两位,因此得到紧凑且由程序确定的结果。
核心知识点
- 列表导向格式自动处理数据类型和布局,适合交互、调试和格式要求不高的输出。
- 显式格式适合表格、报告和需要稳定文本结构的场景。
- 显式格式中的编辑描述符应与输出列表中的数据类型和顺序相对应。