【发布时间】:2015-03-13 11:55:02
【问题描述】:
在逻辑中,在 *ahem* 正确设计的编程语言中,将布尔值与 true 进行比较总是多余的,即 a == True 应该简单地替换为 a。 (同样,a == False by not a)。
包括 C 在内的许多语言都没有正确的布尔类型,因此它可以与 true 进行比较(例如,2 == true 产生 0,它作为布尔值表示假,而2本身可以代表真)。
这在 Fortran 中是否也是一个问题,还是我可以始终将 a .eqv. .true. 替换为 a?
(我在一些遗留代码中发现了这一点,我严重怀疑这只是作者没有真正考虑过的众多事情之一......但我很好奇是否真的隐藏了一些我应该隐藏的特殊情况小心。)
【问题讨论】:
-
请注意,我发现了一个案例,其中 nvfortran, for
write(6,*) var1, .true., var1 .eqv. .true.写入T T F。这一定是一个错误,我正在尝试将其简化为一个小测试用例,但到目前为止还没有运气。