4

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

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

4

2 回答 2

6

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

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

参考

于 2012-08-31T00:04:21.973 回答
1

具有 DEC/VMS 链接或遗产的编译器支持将允许整数参数扩展为 .OR。(和其他逻辑运算符)。那组编译器定义了.OR。对整数的操作是按位操作的。

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

于 2012-09-02T12:45:41.190 回答