gpt4 book ai didi

c++ - 在 "cout"语句中调用具有 "cout"语句的函数

转载 作者:IT老高 更新时间:2023-10-28 22:26:37 29 4
gpt4 key购买 nike

我在搞乱代码时遇到了这种相当模糊的行为,这是示例:

#include <iostream>

using namespace std;


int print(void);

int main(void)
{
cout << "The Lucky " << print() << endl; //This line
return 0;
}

int print(void)
{
cout << "No : ";
return 3;
}

在我的代码中,带有注释的语句 //这一行应该打印出来The Lucky No : 3,而是打印了 No : The Lucky 3。是什么导致了这种行为?这是否与 C++ 标准有关,或者它的行为因一种编译器而异?

最佳答案

未指定函数参数的评估顺序。你的行在编译器看来是这样的:

operator<<(operator<<(operator<<(cout, "The Lucky "), print()), endl);

语句中的主要调用是以 endl 作为参数的调用。未指定第二个参数 endl 是先计算还是较大的子表达式计算:

operator<<(operator<<(cout, "The Lucky "), print())

分解那个,未指定函数 print() 是先调用还是子表达式:

operator<<(cout, "The Lucky ")

所以,回答你的问题:

What causes this behavior? Does this has to do with C++ standard or its behavior vary from one compiler to another?

它可能因编译器而异。

关于c++ - 在 "cout"语句中调用具有 "cout"语句的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11603894/

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