
严格按照语法,这样用是不正确的。
应该使用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。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)