首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

【运算符有关问题】

2012-03-21 
【运算符问题】假设:int a 10, b 20对于a a+b-(ba)不能交换a,b的值,,我们可以理解:先运算 b a所

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

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

热点排行