我刚开始在Fedora 17中使用gfortran 4.7.2.当我尝试使用以下测试代码时,我没有得到输出:
PROGRAM test_ampersand
IMPLICIT NONE
PRINT *, 'I am a new learner of' &
'fortran'
END PROGRAM test_ampersand
Run Code Online (Sandbox Code Playgroud)
我期待输出为:
I am a new learner of fortran
Run Code Online (Sandbox Code Playgroud)
语句延续在自由格式源中的工作方式是将问题的语句转换为
print *, 'I am a new learner of' 'fortran'
Run Code Online (Sandbox Code Playgroud)
这不是一个有效的事情。自然可以写
print *, 'I am a new learner of'//' fortran'
Run Code Online (Sandbox Code Playgroud)
或者
print *, 'I am a new learner of', 'fortran'
Run Code Online (Sandbox Code Playgroud)
并可能看到大致相同的效果。
但是,正如其他答案中所指出的,可以使用特殊形式的语句继续在自由格式源中的行边界上继续文字字符:
print *, 'I am a new learner of &
&fortran'
Run Code Online (Sandbox Code Playgroud)
通常人们经常看到自由格式的语句继续,&如问题中那样在非终止行上简单地使用。但是,在这个所谓的字符上下文中,我们必须&在继续行上有一个,并且在继续行上,语句以紧跟在&,之后的字符继续,并且在相同的字符上下文中。
然而,对于固定格式的源,情况就不同了。
print *, 'I am a new learner of'
1'fortran'
Run Code Online (Sandbox Code Playgroud)
就好像
print *, 'I am a new learner of' 'fortran' ! Lots of spaces ignored
Run Code Online (Sandbox Code Playgroud)
这又是一个无效的陈述。使用
print *, 'I am a new learner of
1fortran'
Run Code Online (Sandbox Code Playgroud)
是一个有效的语句,但再次受到直到第 72 列的所有空格的影响。
可以在这里使用字符串连接:
print *, 'I am a new learner of '//
1 'fortran'
Run Code Online (Sandbox Code Playgroud)
或者干脆在第 72 列处断行(毕竟,我们这样做是因为行很长)。
这也应该有效:
PRINT *, 'I am a new learner of &
&fortran'
Run Code Online (Sandbox Code Playgroud)
也就是说,字符文字可以在换行符中继续,但每个连续行必须在第一个非空白位置有一个&符号.
当继续有问题的行时,您需要一个逗号(在一行上打印多个变量或文字常量时需要逗号)或字符串连接//,将两个字符串连接成一个字符串。
这将起作用:
PRINT *, 'I am a new learner of ', &
'fortran'
Run Code Online (Sandbox Code Playgroud)
这也将起作用:
PRINT *, 'I am a new learner of '// &
'fortran'
Run Code Online (Sandbox Code Playgroud)