C语言中,怎样不用中间变量而互换两个变量的值呢?

如题所述

有两种方式可以不使用中间变量,交换同类型的变量a,b的值:
1 .使用加法操作
a+=b;
b=a-b;
a -= b;

2 .使用异或操作:
a^=b;
b^=a;
a^=b;

C语言运算符是说明特定操作的符号, 它是构造C语言表达式的工具。C语言的运算异常丰富,除了控制语句和输入输出以外的几乎所有的基本操作都为运算符处理。

除了常见的三大类,算术运算符、关系运算符与逻辑运算符之外,还有一些用于完成特殊任务的运算符,比如位运算符

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-09-01
对于整数的确可以像楼上几个同学说的进行交换,但是这只是对于整数这个特殊情况,对于一般意义的量,比如指针类型,除非深入了解各种变量的计算机内部表示,否则只能通过中间变量来交换两个变量的值。而且从效率的角度来说,通过一个中间变量交换只是增加了一个空间开销,即使是两个整数交换的情况,通过中间变量交换也是最明智的选择,因为对整数交换的特殊方法只能注定程序的运行效率不高。
这个问题提的有想法。但是事实是目前我们实现交换两个变量的最好方法就是通过一个中间变量,虽然对于某些变量有些特殊的技巧使它们不通过中间变量实现,但是运算量大,代价远不如通过中间变量。

参考资料:《C程序设计语言》《深入理解计算机系统》

第2个回答  2015-12-31
有两种方式可以不使用中间变量,交换同类型的变量a,b的值:
1 使用加法操作。
a+=b;
b=a-b;
a -= b;

2 使用异或操作:
a^=b;
b^=a;
a^=b;
第3个回答  2011-08-31
我来告诉你 ,可以这样设计
假如有A=1,B=2;
然后想交换值,为
A=B;
B=A;
即可
第4个回答  2011-08-28
比如说:
a b
a = a+b;
b = a-b;
a = a-b;
例如:
a=5,b=3;
a = a+b =8;
b = a -b = 8-3 = 5;
a = a-b = 8 -5 =3本回答被提问者采纳

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 当然 这种方法不怎么好 因为它可能会出现精度损失的额。。。比如 a = 3.123456 b = 1234567.000000 交换后各变量值变为:a = 1234567.000000 b = 3.125000 所以说它适合于交换整型和浮点型数值的变量 2.乘除法 a = a * b;b = a \/ b;...

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语言中如何将两个数进行互换
将两个数进行互换的方法有两种形式: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语言)用宏定义写出swap(x,y),不用中间变量完成x,y的交换数据交换。拜...
define swap(x, y) {x = x+y; y = x-y; x = x-y; }

C语言中为什么可以不增加新变量将两个变量的值互换?
C语言中为什么可以不增加新变量将两个变量的值互换。纯粹的数学转换而已,没有任何值得称道的地方。实际编程中没有人会这样做。这里考察的只是你对于基础数学逻辑的掌握。与程序而言,并无益处,只是提高了程序的逻辑复杂度。

python交换两个变量的值为什么不用中间变量
使用中间变量,你是说这样吗:再看看不使用中间变量:以上这两个,你觉得哪个简单,哪个代码量少呢?是的,当然是第二个。因为python的宗旨是优雅,简单,高效,不屑于做重复繁杂的操作,当然上面两个都是可以的,但我相信大部分人会选择后者,减少代码量,操作也不复杂,也不是说就不用第一种,根据...

c语言中ab两数值交换
将两个数进行互换的方法有两种形式:第一,借助中间变量完成,此方法直观,易理解,使用最多。第二,不需要中间变量,通过变量身的运算完成交换。C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能...

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,...

相似回答