c=(a+=++b,b+=4);
运算顺序是未指定的,但是结果是确定的。
首先,,运算符要求++b的副作用(即改变b的值)必须发生在b+=4求值之前。
所以给出一个可能的计算顺序:(设a的原值是a_,b的原值是b_,c的原值在这里没有影响)
(注意并不一定这样计算,但是无论怎么计算都一样并且这种方式最简单)
t1 = ++b;
a += t1;
t2 = (b += 4);
c = t2;
进行计算。
1. b的值变为b_ + 1(假设不溢出),所以t1的值也是b_ + 1。注意前置自增返回自增后的值。
2. a的值加上t1,变为a_ + b_ + 1。
3. b的值增加4,变为b_ + 5。所以t2的值也变成这个数。
4. c的值变为t2,也就是b_ + 5。
所以计算结束后,
a的值是a_ + b_ + 1
b的值是b_ + 5
c的值是b_ + 5I
运算顺序是未指定的,但是结果是确定的。
首先,,运算符要求++b的副作用(即改变b的值)必须发生在b+=4求值之前。
所以给出一个可能的计算顺序:(设a的原值是a_,b的原值是b_,c的原值在这里没有影响)
(注意并不一定这样计算,但是无论怎么计算都一样并且这种方式最简单)
t1 = ++b;
a += t1;
t2 = (b += 4);
c = t2;
进行计算。
1. b的值变为b_ + 1(假设不溢出),所以t1的值也是b_ + 1。注意前置自增返回自增后的值。
2. a的值加上t1,变为a_ + b_ + 1。
3. b的值增加4,变为b_ + 5。所以t2的值也变成这个数。
4. c的值变为t2,也就是b_ + 5。
所以计算结束后,
a的值是a_ + b_ + 1
b的值是b_ + 5
c的值是b_ + 5I
