x=x+(x=y)的执行过程是怎样的?

现在有两个数,a的值是0,b的值是1,执行a=a+(a=b);

int a=0,b=1,c=0;
a=a+(a=b);
printf("%d",a);

执行结果为2,即a=1+1=2。

如果把中间的表达式中的加一个值为0的c,那么:

int a=0,b=1,c=0;
a=a+c+(a=b);
printf("%d",a);

执行结果为1,即a=0+0+1=2。

如果把c换成常量0,那么:

int a=0,b=1,c=0;
a=a+0+(a=b);
printf("%d",a);

执行结果还为2,即a=1+0+1=2。

x=x+(x=y)
这个程序是未定义行为
你可以试试看不同的编译器,结果会不一样
具体看这里的解释:https://blog.csdn.net/weixin_43447989/article/details/100049023

x=x+(x=y)
先是x=y,使得x等于y的值
然后x=x+x,也就是x值扩大一倍

该运算表达式的执行过程可以分为以下两个步骤:

  1. 执行x=y,即将变量y的值赋给变量x,并返回y的值。

  2. 将变量x的原始值与步骤1中返回的值相加,并将结果赋给变量x。