gpt4 book ai didi

delphi - 带有 AND 运算符的语句中的成员是否始终按给定顺序进行检查?

转载 作者:行者123 更新时间:2023-12-03 14:39:57 25 4
gpt4 key购买 nike

我想知道以下代码是否可能因访问冲突而失败,或者它是否安全。带有 AND 运算符的语句的第一个成员是否始终作为第一个检查,或者可能(通过某些编译器优化或其他方式)将第二个成员作为第一个检查?

var
Item: TSomething;

procedure DoSomething;
begin
if Assigned(Item) and (Item.SomeProperty) then
DoSomethingElse;
end;

上面的代码绝对安全吗?

谢谢!

最佳答案

代码是安全的 boolean short-circuit evaluation处于事件状态:

In the {$B-} state, the compiler generates code for short-circuit Boolean expression evaluation, which means that evaluation stops as soon as the result of the entire expression becomes evident in left to right order of evaluation.

这有点令人困惑,因为必须关闭 B(或具有长名称的 BOOLEVAL)指令才能将短路评估切换为 ON...

另请参阅Operator Precedence .

关于delphi - 带有 AND 运算符的语句中的成员是否始终按给定顺序进行检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9718212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com