c语言中
d+=a++如何运算
以及和d+=(a++)是否有区别
d+=a++,是先执行d=d+a,再执行a=a+1
由于++优先级高于+=,所以没有区别的
运算符号的优先级问题 :
d+=a++ 相当于 d = d + a++; ,先算d+a的值赋值给d, 之后a自增1,比如: int d = 1; int a = 2; d = d + a++; 计算得d = 1 + 2 = 3, a = 2 + 1 = 3.
d+=(a++) 相当于 d = d + (a++); ,先算括号里的a++,此时还是a的值,之后a会自增1,然后再算 d 加上 (a++)的值;因为a++要在a运算之后才会自增1. 所以两个式子的结果是相等的;
先执行d=d+a,再执行a=a+1;
d+=a++等价于:
(1) d = d+a
(2) a++
d+=(a++)等价于 d = d + (a++);
跟上面计算顺序是一样的