gpt4 book ai didi

c++ - const 变量的条件初始化

转载 作者:行者123 更新时间:2023-12-02 20:11:56 25 4
gpt4 key购买 nike

以下基本代码是一个相当大的过程的一部分:

int x = foo();
if (x == 0) x = bar();

x 没有在其他地方修改,所以我可以这样做:

const int x = foo() == 0 ? bar() : foo();

但是 foo() 是一个非常昂贵且复杂的函数,因此由于性能原因以及它可能会生成竞争条件并因此获得不同的值(它可能涉及阅读外部资源)。

我想让代码尽可能可读,并且如果可能的话,尽可能简短。一种选择是:

const int foo_ = foo(), x = foo_ == 0 ? bar() : foo_;

另一方面,我想避免这种临时变量,主要是因为 foo() 可能依赖于外部资源,因此使用 foo_ 作为缓存代码其余部分中的值无效。

我正在发布我现在正在使用的解决方案,但我想知道是否有更好的选择(没有或很少有代码困惑,同一范围内没有时间变量,可读性......)。提前致谢!

PS:它必须至少遵循C++11标准,因为它属于跨平台项目。

我知道这可能是基于意见的,但考虑到之前关于简单性(不是困惑的代码)和避免时间变量(不是为了可读性而是为了代码安全)的陈述,我想知道解决这个问题的选项。

最佳答案

如果您乐意使用gcc extensions然后你可以写:

const int x = foo() ?: bar();

关于c++ - const 变量的条件初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43585829/

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