Fortran中‘data’语句与赋值运算符‘=’的区别是什么?
两段Fortran逻辑变量代码的区别
第一段:运行时赋值
logical :: TF TF = .true.
- 这是程序运行到这一行时才会执行的赋值操作,和你在Python里写
tf = True的逻辑完全一样 - 要是把这段代码放进循环或者条件分支里,每次程序走到这里,都会重新给
TF设为.true. - 可以放在程序的任何执行代码块里(比如子程序、循环体、if语句块内)
第二段:编译期初始化
logical :: TF data TF/.true./
- 这是在程序编译阶段就完成的初始化,程序一启动,
TF就已经是.true.了,运行时不会再执行这一步 - 它只能放在变量声明的区域(和
logical :: TF这类定义语句放在一起),不能塞进循环、if分支这类执行代码里 - 要是
TF是子程序里的局部变量,用data初始化的话,有些编译器会让它保持这个初始值(类似Python里的默认参数),但赋值语句每次进入子程序都会重新赋值
内容的提问来源于stack exchange,提问作者patrick7
相关产品推荐
相关产品推荐

