d+=d-=b*=b+6

来源:百度知道 编辑:UC知道 时间:2024/06/08 15:23:00
我想知道里面是如何计算的 谢谢~~
希望详细点
d+=d 我知道相当于d=d+6
我想知道他整个运算的过程
整个程序是这样的
main()
{ int a=1,b=2,c=3,d=4;
c*=a+b;
d+=d-=*=b+6;
printf("a=%d,b=%d,c=%d,d=%d\n",a,b,c,d);
}

// 从右往左:因为*=、-=、+=的优先级是和赋值运算符=一个级别,所以先做+
// 做b+6再做 b*=b+6,为了方便,假设b=1,d=0;
// d+= d -= b *= 7;
// d+= d -= 7; //因为b=1
// d+= 0 -= 7 //
// d+= -7; 此时d = -7
// 所以最后 d= -7 + (-7) = -14

注意每次a+=B这种情况a的值都会变。

左到右:

d+=()后面是一个整体。相当于d=d+(?);
()里面是多少?答案:d-=(?);
再这个括号里面多少: b*=(?)
这个括号里面是b+6;
然后返回去计算。

就这个逻辑

(从右往左
d+=d-=b=b*(b+6)
d+=d-=b*(b+6)
d+=d=d-b*(b+6)
(d-b*(b+6))+=d-b*(b+6)
最后的d值为:2(d-b(b+6)) 这里的b,d都是初值

这是一种缩写形式它与表达式d=d+(d-b*(b+6))是一样的
这是c中的一种简写形式
如b=b+7缩写为b+=7
c=c*(a+4)缩写为c*=a+4还可以写为c*=a+=4

d+=d-=b*=b+6
从右往左算,假如b=5,d=10;则b=b*(b+6)
所以b=55
再计算d=d-55,求出d=-45;
最后d=d+d=-90