C#这个a=b+(b=a)*0;为什么能交换a和b的值呢?

来源:百度知道 编辑:UC知道 时间:2024/05/14 10:58:52
不懂,希望有朋友可以解释一下,a=b+(b=a)*0;为什么可以交换a和b的值?
这个是一道题的答案,题大意为:"不经过第3方变量,将a和b交换,代码越短越好."我的答案是a=a+b;b=a-b;a=a-b; 但正确答案是a=b+(b=a)*0; 并且我在VS2005下测试了,确实将a和b交换了.不明白,我开始也考虑优先级的问题了,但那么考虑感觉不对.....

这是优先级问题,执行顺序的问题撒
现执行()里面的,他的优先级高
b=a
已经将a的值转给b
然后*0,值为0,
a=b+0

不过按照优先级,实际结果应该是
a等于 a最先的值。
比如:
a=8
b=9

最后
b=8
a=8

这个你说A B值交换问题。我没想明白。
不知道是不是我没理解对

===============
看来我对优先级理解还是不够深刻。。我也不明白。。

对,优先级别的问题啊