C语⾔编程:交换两个变量的值(包括不⽤中间变量)
第⼀种当然很简单了,⽤中间变量
int a=1,b=2,c;
c=a;
a=b;
b=c;
c语言怎么用printfprintf("%d,%d",a,b);
不通过中间变量,交换两个整形变量的值的⽅法:
1.加减法
⽐如
a=a+b
b=a-b
a=a-b
当然这种⽅法不怎么好因为它可能会出现精度损失
⽐如 a = 3.123456 b = 1234567.000000
交换后各变量值变为:
a = 1234567.000000
b = 3.125000
所以说它适合于交换整型和浮点型数值的变量
2.乘除法
a = a * b;
b = a / b;
a = a / b;
乘除法更像是加减法向乘除运算的映射,它与加减法类似:可以处理整型和浮点型变量,但在处理浮点型变量时也存在精度损失问题。但是乘除法多了⼀点要求--------b⼀定不为0。
从上⾯我们可以看出来:加减法和乘除法可能会溢出,⽽且乘除的溢出会特别严重。其实不然,采⽤这两种⽅法都不会溢出。以加减法为例,第⼀步的加运算可能会造成溢出,但它所造成的溢出会在后边的减运算中被溢出回来。
3.异或法
a ^= b;
b ^= a;
a ^= b;
异或法可以完成对整型变量的交换,对于浮点型变量它⽆法完成交换。
所以说这三种⽅法各有所⽤你要根据⾃⼰的情况来选择。。。。。
第4种
int a=1,b=2;
b = (__int64)((__int64)a << 32 | (a = b)) >> 32;
printf("%d,%d",a,b);

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。