请问1和2哪个运算顺序对呢,虽然结果一样,但是想弄清楚

img

第二种会报错:lvalue required as decrement operand
因为运算符--operand要求operand必须是左值,也就是可以修改的值,但是你给的是一个(x+1)的表达式,只有结果不能被修改

第一个是先把x减掉再加一
第二个是先把x和一加起来在把它当作一个整体减一,但是第二个在语法上是不通过的吧

逻辑上应该是第二条,define宏在编译时生效,此时代码就被替换为
int a = 5 + 1;
printf("%d", --a);

而--a是在运行时做的操作