读书人

【运算符有关问题】

发布时间: 2012-03-21 13:33:15 作者: rapoo

【运算符问题】
假设:
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

汇编我不是很懂 但感觉这个应该有用~ ~

读书人网 >C++

热点推荐