在旧的fortran代码中,当.or.
与两个整数类型一起使用时,结果是按位还是操作数还是0/1?
我正在更新遗留代码,并且相信我应该用.or.
替换IOR
的这些实例,但我不确定这是否是旧代码中的预期结果。我应该将结果设置为0还是1?
答案 0 :(得分:6)
我相信你所看到的确实是一个自定义扩展。我以前没有看过这个用过的,但我确实在网上找到了关于野外实际存在的这类东西的参考文献:
当Fortran程序直接与数字硬件通信时,可能需要对位模式执行逐位逻辑运算。标准Fortran没有提供任何直接的方法,因为逻辑变量基本上只存储一位信息,而整数变量只能用于算术。许多系统作为扩展提供了对整数执行逐位操作的内部函数。功能名称各不相同:通常它们是IAND,IOR,ISHIFT。 一些系统提供允许正常的逻辑运算符,如.AND。和.OR。与整数参数一起使用:这是一个更为激进的扩展并且不太令人满意,不仅因为它降低了可移植性,而且还降低了编译器检测正常算术表达式中的错误的能力。
答案 1 :(得分:1)
具有DEC / VMS链接或遗产的编译器支持允许整数参数到.OR的扩展。 (和其他逻辑运算符)。那组编译器定义了.OR。对整数的操作是有点明智的。
目前支持的具有该传统的编译器是Intel Fortran(通过Compaq Fortran,通过Digital Fortran等)。