3、设x是int型变量,且x的初值为10,则计算表达式x-=x+=x+2后,x的值为 ( ) A.22 B.44 C.0 D.12 key:C为什么是 x-=x+=x+2 因为:x+=y 等价于 x=x+y 我个人认为是:x=x-(x+=x+2) --->x=x-(x=x+(x+2))-->x=x-(2x+2)-->x=-x-2 带人数据--->x=-12

问题描述:

3、设x是int型变量,且x的初值为10,则计算表达式x-=x+=x+2后,x的值为 ( ) A.22 B.44 C.0 D.12 key:C
为什么是
x-=x+=x+2
因为:x+=y 等价于 x=x+y 我个人认为是:x=x-(x+=x+2) --->x=x-(x=x+(x+2))
-->x=x-(2x+2)-->x=-x-2 带人数据--->x=-12

在含有多个赋值运算符的表达式中,赋值符的运算优先级最高,赋值运算从右向左进行:
1. x+2 的计算结果为12
2. x+=12 ,此时x的原始内容是2,计算后x的内容为 14
3. x-=14,此时x的内容就是14,计算后x的内容为 0

不用考虑那么复杂,赋值操作是从右向左的
这个题中不论右边的赋值操作如何计算,最后一个赋值操作永远是x-=x,永远是0的

不要误导人家好吧
正确的解应该是:
从右向左没错,但是 C_Study_Room 的计算是错误的!
x+2 计算完之后 x 的值仍为 10
此时,应该是 x += 12 (即:x = x + 12),此时 x 的值为22,
原等式此时可以简化为 x -= 22(即:x = x - 22)
最后,结果为0.