fortran表达式x=.true.正确吗?

fortran表达式x=.true.正确吗?,第1张

严格按照语法,这样用是不正确的。

应该使用logical类型专门定义变量x,例如 logical  x,这样才可以通过  x=.true. 进行赋值

但是,大多数fortran编译器对于变量定义比较兼容,作为默散盯物认的real类型变量,x=.true. 语冲液句编译时也能通过。

写了一段fortran代码,用compaq编译器进行编译。

运行结果如下:

程序定义了x为real类型,a为integer类型,b为logical类型,

通过equivalence语句将三个变量共享同一个存储地址,对x、a、b三个变量分别赋值.true.后,观察实际赋值的结果。

赋值给real变量x,映射到logical变量b却是.false.,映射到integer变量a是-1;

赋值给integer变量a,或者赋值给logical变量b,映射到x都是无效值,也就是不符合real存储结构的定义,是无效表达。

具体见运行结则冲果的附图。

需要说明的是,如果你用了x=.true.语句进行赋值,则在同一个程序单元中使用if语句时,它可以按照赋值的结果进行正确判断。这是编译器设计者为了兼容移植代码,提供给程序员的便利。

但是,不建议这么用。因为这类不规范的代码如果出现在代码量大的程序中,一旦发生问题会难以快速查找和修改,影响编程工作的效率。

打印结果是 False。答逗

Dim X As Integer, 定义了 X , 正常咐吵情况 X 的值为0,

Print x=True, 这里的 = 是一个判断符合衡举侍,而非赋值符合,Ture 的是 0xFFFFFFFF, 与 0 不相等,所以是 false, 故打印 False。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12417538.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-23
下一篇2023-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存