C中修复后修复和预修复之间括号的优先顺序

sch*_*ger 3 c operators

C运算符优先表指出的更高的优先级().

码:

# include <stdio.h>
int main()
{
    int temp=2;
    (temp += 23)++;    //Statement 1
    ++(temp += 23);    //Statement 2
    printf("%d",temp);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,虽然括号中的优先级高于语句2中的预先修复运算符,但为什么会出现错误.在声明1中,两者具有相同的优先级,但评估顺序是从左到右.还是一样的错误.第三个疑问:operator + =优先级低得多,那么为什么它会导致错误.

error: lvalue required as increment operand
Run Code Online (Sandbox Code Playgroud)

mar*_*arc 6

An lvalue是可以分配给其他值的值(因为它位于赋值运算符的左侧).(temp += 23)是一个rvalue.没有任何东西可以分配给它.