gpt4 book ai didi

language-agnostic - 所有编程语言都有 bool 短路求值吗?

转载 作者:行者123 更新时间:2023-12-02 23:33:10 25 4
gpt4 key购买 nike

在 PHP 代码中

if(a() && b())

当第一个操作数的计算结果为 false 时,b() 将不会被计算。

同样,在

if (a() || b())

当第一个操作数的计算结果为 true 时,b() 将不会被计算。

对于所有语言(例如 Java、C# 等)都是如此吗?

这是我们使用的测试代码。

<?php
function a(){
echo 'a';
return false;
}

function b(){
echo 'b';
return true;
}


if(a() && b()){
echo 'c';
}
?>

最佳答案

这称为short-circuit evaluation .

对于 C 派生语言(C、C++、Java、C#)来说通常如此,但并非对于所有语言都如此。

例如,VB6 就没有这样做,VB.NET 的早期版本也没有这样做。 VB8(在 Visual studio 2005 中)引入了 AndAlsoOrElse为此目的的运营商。

另外,从评论来看,csh 似乎是从右到左执行短路评估,这让事情变得更加困惑。

还应该指出,短路评估(或缺乏)有其危险需要注意。例如,如果第二个操作数是具有任何副作用的函数,则代码可能无法完全按照程序员的预期执行。

关于language-agnostic - 所有编程语言都有 bool 短路求值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1232603/

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