不用中间变量交换 a ,b(三种方法)

a=a+b;b=a-b;a=a-b;a=a^b;b=a^b;a=a^b;还有其他方法的,但是我忘记了,谁会... a = a + b;
b = a - b;
a = a - b;

a = a^b;
b = a^b;
a = a^b;
还有其他方法的,但是我忘记了,谁会
展开
 我来答
染尘墨羽
2018-12-10 · TA获得超过1.1万个赞
知道答主
回答量:1032
采纳率:100%
帮助的人:40.1万
展开全部

不用中间变量交换两个变量的值:

1、加减法:该方法可以交换整型和浮点型数值的变量,但在处理浮点型的时候有可能出现精度的损失。

a = a + b;

b = a - b;

a = a - b;

2、异或法:可以完成对整型变量的交换,对于浮点型变量它无法完成交换。

a = a^b;

b = a^b;

a = a^b;

3、乘除法:可以处理整型和浮点型变量,但在处理浮点型变量时也存在精度损失问题。而且乘除法比加减法要多一条约束:b必不为0。

a = a * b

b = a / b

a = a / b

其中加减,乘除容易越界,用位运算异或效率最高,且不会越界。

使用位运算交换两个数,是利用了异或的自反性: a^b^b=a^0=a;

扩展资料:

异或,英文为exclusive OR,缩写成xor

异或(xor)是一个数学运算符。它应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“xor”。其运算法则为:

a⊕b = (¬a ∧ b) ∨ (a ∧¬b)

如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。

异或也叫半加运算,其运算法则相当于不带进位的二进制加法:二进制下用1表示真,0表示假,则异或的运算法则为:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同为0,异为1),这些法则与加法是相同的,只是不带进位,所以异或常被认作不进位加法。

异或略称为XOR、EOR、EX-OR

程序中有三种演算子:XOR、xor、⊕。

使用方法如下

z = x ⊕ y

z = x xor y

参考资料:百度百科-异或

jkds
2018-09-13 · TA获得超过2070个赞
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部

1、加减法:该方法可以交换整型和浮点型数值的变量,但在处理浮点型的时候有可能出现精度的损失

a = a + b;

b = a - b;

a = a - b;

2、异或法:可以完成对整型变量的交换,对于浮点型变量它无法完成交换。

a = a^b;

b = a^b;

a = a^b;

3、乘除法:可以处理整型和浮点型变量,但在处理浮点型变量时也存在精度损失问题。而且乘除法比加减法要多一条约束:b必不为0。

a = a * b

b = a / b

a = a / b

扩展资料:

变数或变量,是指没有固定的值,可以改变的数。变量以非数字的符号来表达,一般用拉丁字母。变量是常数的相反。变量的用处在于能一般化描述指令的方式。结果只能使用真实的值,指令只能应用于某些情况下。变量能够作为某特定种类的值中任何一个的保留器。

参考资料:百度百科:变量

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
985967518
2015-11-14 · 知道合伙人教育行家
985967518
知道合伙人教育行家
采纳数:18027 获赞数:109866
14年本科毕业于河南理工大学,至今就读于河南理工大学攻读硕士学位,从事编程学习已有5年。

向TA提问 私信TA
展开全部

1、加减法:该方法可以交换整型和浮点型数值的变量,但在处理浮点型的时候有可能出现精度的损失

a = a + b;

b = a - b;

a = a - b;

2、异或法:可以完成对整型变量的交换,对于浮点型变量它无法完成交换。

a = a^b;

b = a^b;

a = a^b;

3、乘除法:可以处理整型和浮点型变量,但在处理浮点型变量时也存在精度损失问题。而且乘除法比加减法要多一条约束:b必不为0。

a = a * b

b = a / b

a = a / b

例如:

#include<stdio.h>
int main()
{
    int a = 1;
    int b = 2;
    //方法一:
    a = a + b;
    b = a - b;
    a = a - b;
    //方法二:
    a = a * b;
    b = a / b;
    a = a / b;
    //方法三:
    a = a^b;
    b = a^b;
    a = a^b;
    printf("a = %d\t,b =%d\n",a,b);
    return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
leeming6666
2008-12-11 · TA获得超过3451个赞
知道大有可为答主
回答量:3239
采纳率:86%
帮助的人:728万
展开全部
a = a - b
b = a + b
a = b - a

a = a * b
b = a / b
a = a / b
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式