【发布时间】:2013-02-26 08:15:54
【问题描述】:
我不得不为我最近正在做的一项合同工作选择 Delphi,我希望有人澄清的一件事是在条件语句中执行逻辑,例如 if。
我来自 C/C++ 和这些语言的背景,一旦知道 if 语句失败,其余的逻辑就不会执行。例如:
if (somefunc() == FALSE && anotherfunc() == TRUE)
在上述情况下,如果somefunc() 返回TRUE,则永远不会调用anotherfunc()。
就我目前所见,在 Delphi 中,这并不成立。相反,对于
if (somefunc() = False and anotherfunc() = True) then
那么,无论somefunc() 返回什么,anotherfunc() 都会被调用。
我已经阅读了各种 Delphi 书籍,并重读了一些条件章节,但在任何地方都找不到关于这种行为的提及。谁能指出我在 Delphi 或 Pascal 的某个地方声明了这种行为?
【问题讨论】:
-
查看en.wikipedia.org/wiki/Short-circuit_evaluation - “允许但不需要短路”。
-
您不需要编写布尔状态,即
= False或= True。相反,您可以使用not运算符来检查是否为假,方法是不包括not部分您的 if 语句以相反的方式工作,例如 true 而不是 false。 -
根据你打算如何解释你的 Delphi 代码, anotherfunc 应该 在 somefunc 返回 false 时被调用,但你说这是个问题。
-
对不起,上面的示例代码是错误的。您显然错过了一些括号,因此编译器将尝试评估“FALSE 和 anotherfunc()”,并且不知道如何处理“somefunc()”和“True”。无论如何,我明白你的观点并理解你的问题,只是告诉我这件事让我感觉更好。
标签: delphi