gpt4 book ai didi

C++ 'AND' 评估 - 标准有保证吗?

转载 作者:太空宇宙 更新时间:2023-11-04 15:26:24 24 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
Safety concerns about short circuit evaluation

标准对评估 && 表达式有何规定 - 它是否保证参数评估将在第一个 false 处停止?

例如:

Foo* p;
//....
if ( p && p->f() )
{
//do something
}

如果 p == NULL 是否保证不会调用 f()

另外,评估的顺序是否保证是子句中出现的顺序?

优化器可能会更改如下内容:

int x;
Foo* p;
//...
if ( p->doSomethingReallyExpensive() && x == 3 )
{
//....
}

首先评估 x==3 的形式?还是它总是先执行真正昂贵的函数?

我知道大多数编译器(可能是所有编译器)在遇到第一个 false 后会停止求值,但标准对此有何规定?

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