C++函数中非常奇怪的优先级/优先级

xyz*_*xyz 1 c++ operator-precedence

为什么以下打印出"World Hello!"?

根据我的理解,根据运算符优先级,这应该从右边开始评估.但相反,从左到右似乎是正确的.为什么是这样?

#include <iostream>

using namespace std;


char print() {
    cout << "World";
    return '!';
}

int main() {
    cout << "Hello " << print() << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Fré*_*idi 6

我不认为该标准print()对于关于<<运营商应用的确切时刻给出任何保证.

在您的情况下,它看起来像是先print()被调用,然后cout << Hello被评估,然后才被[result of the previous expression] << [result of print()]评估.