【运算符问题】
假设:
int a = 10, b = 20;
对于
a = a+b-(b=a);
不能交换a,b的值,,我们可以理解:先运算 b = a;所以变成 a = a +a -a;
最后结果都是等于原来a的值。
但是如果这样解释是准确的,那么,
当我写成:
a =( a+b )-( b=a );为什么还不能交换值呢,,结果跟上面的一样。。
我肯定用VS2010试过。。
各位高手们,,求解啊
[解决办法]
参见顺序点的知识,没人能保证减号左边或右边哪边先算
[解决办法]
http://topic.csdn.net/u/20110826/09/601ebe9c-c2ae-4d63-a4e2-506c618bb654.html?51782
a =( a+b )-( b=a );
mov eax,dword ptr [a]
mov dword ptr [b],eax
mov ecx,dword ptr [a]
mov dword ptr [a],ecx
汇编我不是很懂 但感觉这个应该有用~ ~