C语言里有强盗法则: 即每个变量都希望得到尽可能多的资源/操作。
所以
x+++y =>(x++)+y => x+y 再 x = x+1。
这法则在任何编译器上都是适用的。
至于++ 和逗号表达式综合在一起,就需要根据不同编译器来看了,有些编译器会先全部自加后再计算算术运算,而有些编译器会遵循:满足一个运算即执行运算。
例如:int i = 3;
int j = (++i)+(++i)+(++i);
j = 18 和 j = 16. 都是可能的。
18就不解释了, 为何出现16:
即有些编译器默认 (++i)+(++i) 满足一个运算,即先计算此表达式等于5+5 = 10,然后再++i,
即10+6 = 16。
综上:你可以按下面代码,研究下输出结果,你会觉得很好玩的~~~~~~~~~~~~
int main(void)
{
int x=9,y=4;
printf("%d\n",--x-y);
printf("%d\n",x---y);
printf("%d\t%d\n",x---y,--x-y);
printf("%d\n",x+++y);
printf("%d\n",++x+y);
printf("%d\t%d\n",x+++y,++x+y);
}