C语言只使用2个变量实现交换两个int数字,方法越多越好,谢谢
int x = 1;
int y = 2;
x = x ^ y;
y = x ^y;
x = x ^ y;
int x=1;
int y=2;
x=x+y;
y=x-y;
x=x-y;
int x=1
int y=x+1
x=x+y;
y=x-y;
x=x-y;
int a,b;
b=a+b-(a=b);
我以为b=a+b-(a=b) 应该是结果为b = 原来的b 没有改变b。
但是我测试发现vs2010是这样的 没有改变的b, 但是gcc 就是a b互换啦。我觉得如下应该没有歧义吧:
b = (a+b)-(a=b);
int swap (x,y)
{
x=x+y;
y=x-y;
x=x-y;
}
拿去,不用谢
除了位操作外,其它几种好像都没有考虑溢出
之前写的匆忙,我又重新写了下,这个我测试过了,肯定没问题,关于溢出,我只想说你是要写多大的数啊,32位系统下只要数不超过4294967295就不会有溢出问题