Mit*_*hil 4 fortran logical-operators visual-studio visual-studio-2012 intel-fortran
我正在 Visual Studio 2012 中使用 Intel Fortran 来编译 Fortran 代码。当我尝试使用逻辑运算符时,我注意到独立的逻辑表达式会按预期产生 T 或 F。但是,如果我需要数字 T 或 F(0 或 1),当逻辑结果为 T 时我会得到 -1。
例如:
integer*4 a
a = 1
logicval = (node(5,L).gt.0)
numval = 1*(node(5,L).gt.0)
write(*,*) logicval, numval
Run Code Online (Sandbox Code Playgroud)
会输出
时间,-1
有没有办法可以重新定义分配给 T 和 F 的数值?
正如其他人所说,这种非标准用法的英特尔 Fortran 默认值是具有低位设置(奇数)的整数值是 true,偶数值(低位清除)是 false。常数.TRUE。位模式为-1。当您进行转换时,情况会变得更加复杂,直到版本 17 为止,编译器在这方面还没有完全一致。请注意,如果您使用 -standard-semantics,则隐含 -fpscomp 逻辑。
请阅读https://software.intel.com/en-us/forums/intel-visual-fortran-compiler-for-windows/topic/275071#comment-1548435以及版本 17 发行说明 ( https://software .intel.com/en-us/articles/intel-fortran-compiler-170-release-notes)了解该版本中有关如何处理数字逻辑转换的更改的信息。
归档时间: |
|
查看次数: |
2005 次 |
最近记录: |