postfix ++的优先顺序

Ami*_*adi 1 c++ operators

请考虑以下代码:

int a = 5;
int b = a++;
cout << "b is " << b << endl; // b is 5 
Run Code Online (Sandbox Code Playgroud)

要么:

int get_number(){
    int a = 5;
    return a++;
}
int main(){
    int b = get_number();
    cout << "b is " << b << endl; // b is 5
}
Run Code Online (Sandbox Code Playgroud)

根据此表,后缀++运算符的优先级高于=运算符,因此输出应该是b is 6.但输出是b is 5.我们怎么解释这个?

Xir*_*ema 9

内置类型的postfix ++运算符(和postfix--运算符)的契约是它返回先前的值,而不管发生的变化.因此5,即使6之后分配了接收到变更的变量,函数仍会返回.