C语言只使用2个变量实现交换两个int数字,方法越多越好,谢谢

C语言只使用2个变量实现交换两个int数字,方法越多越好,谢谢

问题描述:

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就不会有溢出问题图片说明