gpt4 book ai didi

c++ - cout 消息的顺序不符合预期

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:15:05 26 4
gpt4 key购买 nike

当我执行它时,我对下面代码的输出感到困惑。

代码:

int add(int a, int b)
{
cout<<"inside int add function"<<endl;
return a+b;
}

float add(float a, float b)
{
cout<<"inside float add function"<<endl;
return a+b;
}

int main()
{
cout<<add(10.0f,20.0f)<<endl<<add(20,50);
return 0;
}

输出:

inside int add function
inside float add function
30
70

我不明白 cout 消息在控制台中打印的顺序。但我希望上面程序的输出如下所示

inside float add function
30
inside int add function
70

有人可以解释一下上述行为吗。

最佳答案

你代码中的这一行:

cout<<add(10.0f,20.0f)<<endl<<add(20,50);

将被编译器翻译成:

operator<<(operator<<(operator<<(cout,add(10.0f,20.0f)),endl),add(20,50));

由于函数参数的计算顺序不是标准规定的,所以恰好 add(20,50)operator<<(operator<<(cout,add(10.0f,20.0f)),endl) 之前被评估.

关于c++ - cout 消息的顺序不符合预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23309153/

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