.or 的旧代码用法

legacy code uses of .or

提问人:William Pursell 提问时间:8/31/2012 更新时间:9/2/2012 访问量:136

问:

在较旧的 fortran 代码中,当与两个整数类型一起使用时,结果是按位的还是操作数的还是 0/1?.or.

我正在更新旧代码,并相信我应该用 替换这些实例,但不确定这是否是旧代码中的预期结果。我应该将结果设置为 0 还是 1?.or.IOR

福特兰

评论

0赞 Vladimir F Героям слава 8/31/2012
只是出于我的好奇心,哪个编译器接受它?
0赞 William Pursell 8/31/2012
@vladimirF我希望我知道!我敢肯定,如果我能够编译,我的工作会更容易。

答:

6赞 D.Shawley 8/31/2012 #1

我相信你所看到的确实是一个自定义扩展。我以前没有看到过这个在使用,但我确实在网上找到了关于野外实际存在的此类东西的参考资料:

当 Fortran 程序直接与数字硬件通信时,可能需要对位模式执行按位逻辑运算。Standard Fortran 没有提供任何直接的方法,因为逻辑变量本质上只存储一位信息,而整数变量只能用于算术。作为扩展,许多系统提供内部函数来对整数执行按位运算。函数名称各不相同:通常为 IAND、IOR、ISHIFT。一些系统允许将普通的逻辑运算符(如 .AND. 和 .OR.)与整数参数一起使用:这是一个更激进的扩展,但更不令人满意,不仅因为它降低了可移植性,而且还降低了编译器检测普通算术表达式中错误的能力。

参考

评论

0赞 aka.nice 9/1/2012
我希望我没有了解这个丑陋的扩展,但这次挖掘+1
1赞 IanH 9/2/2012 #2

具有 DEC/VMS 链接或传统的编译器支持将允许整数参数扩展为 .OR。(和其他逻辑运算符)。该组编译器定义 .OR。对整数的运算是位明智的。

目前支持的具有该传统的编译器是 Intel Fortran(通过 Compaq Fortran、Digital Fortran 等)。

评论

0赞 Vladimir F Героям слава 9/3/2012
是的,该讨论 comp.lang.fortran 还提到它可以在 IBM XL Fortran 中启用。