交换两个数的内容的比较(分为创建临时变量和不创建临时变量两种情况)

1.创建临时变量

#include <stdio.h>
int main()
{
    int a = 3, b = 4, c = 0;           
    printf("a=%d b=%d\n", a, b);
    c = a;                                   
    a = b;                                  
    b = c;                                
    printf("a=%d b=%d", a, b);            
    return 0;
}
这种创建临时变量的方法最简单,也最容易想到。

2.不创建临时变量
(1)加法

#include <stdio.h>
int main()
{
    int a = 3, b = 4;           
    printf("a=%d b=%d\n", a, b);
    a = a+b;                                   
    b = a-b;   
    a = a-b;
    printf("a=%d b=%d", a, b);            
    return 0;
}
   加法和乘法都能在满足条件的前提下实现结果,但是并没有考虑两个数相加或者相乘可能会产生数据的溢出。

(2)按位异或^(二进制序列按位异或,相同出零,相异出一)


#include <stdio.h>
int main()
{
    int a = 3, b = 4;
    printf("a=%d b=%d\n", a, b); 
    a = a^b;
                 /*a=0111. 具体计算: a=0011(三表示为二进制);
                 b=00100(四表示为二进制); 按位异或之后a=0111   
                 (相异为一;相同为零)  */
    b = a^b;                                 // b=0011
    a = a^b;                                //  c=0100
    printf("a=%d b=%d", a, b);
    return 0;
}
    这种方法虽然不会产生数据的溢出,然而计算机执行起来的效率并不是很高。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值