用C语言来实现,不通过中间变量,交换两个整形变量的值?

求详细解析!谢谢!

有两种方式:
1 通过加法交换a,b的值。
设a,b原始值为A,B
a +=b; //这时a=A+B; b=B
b = a-b; //b = a-b=A
a = a-b;// a=a-b = B
实现交换。

2 通过异或。
对于任意一个值,用同一个值两次异或后结果为原值。
设a,b原始值为A,B
a=a^b; //a=A^B;
b = a^b; //b = A
a=a^b; // a=B

实现交换。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-11-14
用异或的方法,a=a^b; b=b^a; a=b^a;就可以了,具体的你可以参照谭浩强的《C程序设计第三版》。
第2个回答  2011-11-14
来个好理解的吧

int a,b;

a = a + b;
b = a - b;
a = a - b;

3 4
4 3
Press any key to continue
#include <stdio.h>
void main()
{
int a=3,b=4;
printf("%d %d \n",a,b);
a = a + b;
b = a - b;
a = a - b;
printf("%d %d \n",a,b);
}
有问题请追问 满意记得采纳本回答被网友采纳
第3个回答  2011-11-14
int a=6,b=7;
a=a+b;
b=a-b;
a=a-b;

以上操作可达到交换两个变量的目的。
第4个回答  2011-11-14
有吗?
同求...

用C语言来实现,不通过中间变量,交换两个整形变量的值?
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;...

C语言中,怎样不用中间变量而互换两个变量的值呢?
有两种方式可以不使用中间变量,交换同类型的变量a,b的值:1 .使用加法操作a+=b; b=a-b;a -= b;2 .使用异或操作:a^=b;b^=a;a^=b;C语言运算符是说明特定操作的符号, 它是构造C语言表达式的工具。C语言的运算异常丰富,除了控制语句和输入输出以外的几乎所有的基本操作都为运算符处理。除...

c语言异或怎么换值?
不用中间变量交换两个变量的值:1、加减法:该方法可以交换整型和浮点型数值的变量,但在处理浮点型的时候有可能出现精度的损失。a = a + b;b = a - b;a = a - b;2、异或法:可以完成对整型变量的交换,对于浮点型变量它无法完成交换。a = a^b;b = a^b;a = a^b;3、乘除法:可以...

在C语言中用a^=b^=a^=b为何能交换两个变量而不借助中间变量?
a^=b^=a^=b; 可以写成 a=a^b; b=b^a;\/\/这句就相当于b=b^a^b就相当于b=a了 a=a^b;\/\/同理...

(C语言)用宏定义写出swap(x,y),不用中间变量完成x,y的交换数据交换。拜...
define swap(x, y) {x = x+y; y = x-y; x = x-y; }

在C语言中如何将两个数进行互换
将两个数进行互换的方法有两种形式:1、借助中间变量完成,此方法直观,易理解,使用最多 2、不需要中间变量,通过变量身的运算完成交换。参考代码:方法1:int a=2,b=3,t;t=a; \/\/先将a存储到临时变量t中a=b; \/\/将b存储到a中b=t; \/\/将临时变量中的原a值存储到b中printf("a=%d b=%d...

c语言中用函数交换两个变量的值?
c语言中用函数交换两个变量的值方法是先将变量赋值给中间变量,然后中间变量再赋值给另外一个变量,程序如下:include "Stdio.h"include "Conio.h"void swap(int x,int y){ int t,m;t=x; \/\/变量x赋值给中间变量t m=y; \/\/变量y赋值给中间变量m x=m; \/\/中间变量m赋值给变量x,...

编写c语言程序,实现交换两个变量值的操作。
\/ 编写c语言程序,实现交换两个变量值的操作。要求:使用形参为指针的函数swap完成交换功能。主函数中,使用整型指针从键盘输入两个整数,通过调用swap完成交换 输出交换前后的变量值进行比较。输入输出示例:Input two number:3 4 Before change:a=3,b=4 After change:a=4,b=3 \/ \/\/File: swap....

C语言 如何交换两个字符型数据值
在C语言char 就是 unsigned int 类型。所以可以直接按照,整型的交换方法来进行。例如下例:输出为 如果是字符串,可以使用strcpy函数。例如下例 输出为:请采纳

c语言交换两个数的问题???
。因为对于函数swap()来说,传入的两个地址是值传递形式的,在其内部是局部作用域下的两个变量,完成这两个地址“值”的交换,并不能对调用时的实参产生影响。故而交换失败。另外,再给你个无需中间变量交换两个数值的写法:a = b - a + (b = a); \/\/ 无需中间变量交换a、b的值 ...

相似回答