面试---不增加变量,交换两个数值变量的值

本文探讨了在不使用额外变量的情况下,通过加减法、乘除法和异或法交换两个数值变量的值。加减法和乘除法在处理整型和浮点型变量时可能会导致精度损失,而异或法适用于整型但不适合浮点型。当使用指针交换同一数据对象时,异或法会出现问题。
摘要由CSDN通过智能技术生成

一、加减法

要想不增加变量,交换两个变量的值,可以做加减乘除运算。用对应的加减法或者乘除法都可以做到。举例:a=5;b=8。

加减: a=a+b=5+8=13;b=a-b=13-8=5;a=a-b=13-5=8;
a=a-b=5-8=-3;b=a+b=-3+8=5;a=b-a=5-(-3)=8;
同理,乘除。

#include <iostream>
using namespace std;


int main(void)
{

    int a=8, b=5;
    a = a + b;
    b = a - b;
    a = a - b;
    cout<<a<<" "<<b<<endl;
    return 0;
}

结果:

5 8

Process returned 0 (0x0)   execution time : 0.215 s
Press any key to continue.

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

#include <iostream>
using namespace std;


int main(void)
{

    float a=3.123456, b=1234567.000000;
    a = a + b;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值