gpt4 book ai didi

c++ - 使用 std::cout 的参数评估顺序

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:37:49 25 4
gpt4 key购买 nike

大家好,我今天偶然发现了这段代码,我对到底发生了什么以及更具体的顺序感到困惑:

代码:

#include <iostream>

bool foo(double & m)
{
m = 1.0;
return true;
}

int main()
{
double test = 0.0;
std::cout << "Value of test is : \t" << test << "\tReturn value of function is : " << foo(test) << "\tValue of test : " << test << std::endl;
return 0;
}

输出是:

Value of test is :      1       Return value of function is : 1 Value of test : 0

看到这里,我假设在调用函数之前以某种方式打印了最正确的参数。所以这是从右到左的评价??在调试过程中,尽管似乎该函数在输出之前被调用,但这是我所期望的。我正在使用 Win7 和 MSVS 2010。感谢任何帮助!

最佳答案

表达式中元素的求值顺序是未指定的(除了一些非常特殊的情况,例如 &&|| 运算符以及三元运算符,它们引入了 < em>序列点);因此,不能保证 test 将在 foo(test) (修改它)之前或之后进行评估。

如果您的代码依赖于特定的求值顺序,获得它的最简单方法是将您的表达式拆分为几个单独的语句。

关于c++ - 使用 std::cout 的参数评估顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58408547/

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