第二种会报错:lvalue required as decrement operand因为运算符--operand要求operand必须是左值,也就是可以修改的值,但是你给的是一个(x+1)的表达式,只有结果不能被修改
第一个是先把x减掉再加一第二个是先把x和一加起来在把它当作一个整体减一,但是第二个在语法上是不通过的吧
。
逻辑上应该是第二条,define宏在编译时生效,此时代码就被替换为int a = 5 + 1;printf("%d", --a);
而--a是在运行时做的操作