[英]Operator precedence doesn't behave as expected in c++
考慮以下代碼:
int func1()
{
cout<<"Plus"<<endl;
return 1;
}
int func2()
{
cout<<"Multiplication"<<endl;
return 2;
}
int main()
{
cout<<func1()+4*func2();
}
根據此頁面, *運算符的優先級高於+運算符,因此我希望結果是:
Multiplication
Plus
9
但是結果是
Plus
Multipication
9
!! 編譯器解析器中發生了什么? 編譯器是否喜歡運算符關聯? 所有c / c ++編譯器的輸出是否相同?
編譯器可以隨意按任意順序評估函數-表達式中唯一保證評估順序的情況是順序點; 運營商||
, &&
, ,
和?
三元條件運算符? :
? :
是序列點。 在每種情況下,觸摸左側之前都要評估左側的所有值和副作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.