关于赋值表达式的优先级
a+=a-=a*a不等价于a=a+(a-(a*a))吗?原式→a+=a-=a2→a+=a-a2→a=a+a-a2=2a-a2
我的运算哪里错了? 第二行是答案吗 叙白 发表于 2021-2-23 11:18
第二行是答案吗
第二行是我自己推的结果,但是是错的,我不知道错在哪里。 可以这样拆a = a + (a = a - a * a);
先看括号里的,a - a * a是-90,赋值给a,因为赋值表达式返回赋的值,所以最后就是a = a + -90,又因为a = -90,所以a = -90 + (-90),结果为-180 因为赋值运算符的结合性是自右向左的,所有把a += a- = a*a看成两个表达式:
a -= a*a;
a += a;
然后相当于:
a = a - a*a;
a = a + a;
假设a初始化为2:
a = a - a*a = 2 - 2*2 = -2;
a = a + a = (-2) + (-2) = -4;
页:
[1]