If 语句和任何其他布尔比较足够智能,可以在评估时在第一个 FALSE 值处停止A and B and C and D
评估时首先为 TRUE 值A or B or C or D
.
这种行为的名称是什么?
这是编译器优化吗?如果是这样,有没有办法用一些编译器指令禁用它?
这称为“布尔短路求值”,是“惰性求值”的一种形式。
您可以使用以下命令告诉编译器使用或不使用此功能编译器指令 http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/devcommon/compdirsbooleanshortcircuitevaluation_xml.html:
Complete evaluation Lazy evaluation
{$B+} {$B-}
{$BOOLEVAL ON} {$BOOLEVAL OFF}
但请注意,这不是only一种优化,因为此功能允许您编写类似的代码
if (length(myarr) > 0) and (myarr[0] = MY_VAL) then
即使myarr[0]
不存在。实际上,这很常见。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)