问题描述
- 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;
解决方案三:
我以为b=a+b-(a=b) 应该是结果为b = 原来的b 没有改变b。
但是我测试发现vs2010是这样的 没有改变的b, 但是gcc 就是a b互换啦。我觉得如下应该没有歧义吧:
b = (a+b)-(a=b);
解决方案四:
x=x+y;
y=x-y;
x=x-y;
解决方案五:
int a,b;
b=a+b-(a=b);
解决方案六:
int swap (x,y)
{
x=x+y;
y=x-y;
x=x-y;
}
拿去,不用谢
解决方案七:
除了位操作外,其它几种好像都没有考虑溢出
解决方案八:
之前写的匆忙,我又重新写了下,这个我测试过了,肯定没问题,关于溢出,我只想说你是要写多大的数啊,32位系统下只要数不超过4294967295就不会有溢出问题
解决方案九:
int x=1
int y=x+1
时间: 2025-01-26 15:10:47