level 13
前日,看到一个交换两个变量的值的方法,为:
a^=b^=a^=b.
理论上来说这样可行,我试验时也是可行的。
今天用数组进行这个操作时却出现了问题
主要代码:
a[0]^=a[1]^=a[0]^=a[1];
此时执行完代码,a[1]的值是a[0]的值,但是a[0]中值却为0.
于是拆开实验
a[0]=a[0]^a[1];a[1]=a[0]^a[1];a[0]=a[0]^a[1];
这样得结果却也是正确的。
不明原因。求教。
2012年07月25日 07点07分
1
level 12
我这边在Dev C++下测试的结果是一切正常...
2012年07月25日 07点07分
2
level 13
注:
我是Ubunto下的Emacs……用的gcc编译器……
2012年07月25日 08点07分
3
level 10
这个语句的实现方式随编译器不同而不同,以后不要再这么写了
2012年07月27日 13点07分
7
我国家集训队集训就因为这个丢了100分,并且如果不丢这100就可能能进CTSC了
2012年07月27日 13点07分
@mikeni2006 收到!我还是老老实实用temp做交换吧……大神!Orz!
2012年07月27日 13点07分
level 12
交换可以直接要swap(a, b)这个函数的(需要#include <algorithm>)。
任意类型均可,常数和手写temp交换基本相同。\
更重要的是——不容易写错。
2012年07月27日 13点07分
8