gpt4 book ai didi

c++ - 运算符优先级在 C++ 中不符合预期

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

考虑这段代码:

int func1()
{
cout<<"Plus"<<endl;
return 1;
}
int func2()
{
cout<<"Multiplication"<<endl;
return 2;
}
int main()
{
cout<<func1()+4*func2();
}

根据这个page * 运算符的优先级高于 + 运算符所以我希望结果是:

Multiplication 
Plus
9

但是结果是

Plus 
Multipication
9

!!编译器解析器发生了什么?!编译器是否更喜欢运算符关联?所有 c/c++ 编译器的输出都一样吗?

最佳答案

运算符优先级与求值顺序不同。

您无法保证计算的顺序 - 只要您获得正确的结果,编译器就可以在表达式中以任何它喜欢的顺序自由调用函数。

(一个次要的限定条件:任何引入 sequence point(包括 short circuit 运算符)的东西都会对评估顺序产生影响,但在这种特殊情况下,表达式中没有序列点。)

关于c++ - 运算符优先级在 C++ 中不符合预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18362735/

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