请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

Android Studio 中文社区论坛

 找回密码
 立即注册
搜索
热搜: Android Sdk Gradle
查看: 614|回复: 0

[WINDOWS] C++数值交换方法学习

[复制链接]

415

主题

413

帖子

1551

积分

金牌会员

Rank: 6Rank: 6

积分
1551
发表于 2016-7-18 18:11:36 | 显示全部楼层 |阅读模式
C++学习中,要将数a、b的值进行交换是常见的事,这里给大家教三种不使用任何中间变量的数值交换方法。
程序如下:
#include<stdio.h>  
  
void swapValue1(int &a, int &b) //使用中间变量交换数据  
{  
    int temp = a;  
    a = b;  
    b = temp;  
}  
  
void swapValue2(int &a, int &b)//使用加减运算完成数据交换  
{  
    a = a + b;  
    b = a - b;  
    a = a - b;   
}  
  
void swapValue3(int &a, int &b) //使用位运算交换数据  
{  
    a^=b;  
    b^=a;  
    a^=b;  
}  
int main()  
{  
    int a1 = 1, b1 = 2;  
    int a2 = 3, b2 = 4;  
    int a3 = 5, b3 = 6;  
      
    swapValue1(a1, b1);  
    swapValue2(a2, b2);  
    swapValue3(a3, b3);  
      
    printf("a= %d  b= %d\\n",a1, b1);  
    printf("a= %d  b= %d\\n",a2, b2);  
    printf("a= %d  b= %d\\n",a3, b3);  
      
    return 0;  
}   
运行结果:
解析:
第一种:
使用中间变量来达到交换数据的目的,这是最大众的方法,当然了不满足本题的要求。
第二种:
使用简单的加减操作来达到交换a、b值得目的。
缺点:a+b和a-b时,可能会到导致数据溢出。
第三种:
采用位运算的方法,按位异或运算。(建议采用这种方式)
异或运算:相同的二进制位异或运算为0,不相同的二进制位异或运算为1。
原文来自:C博客

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

AndroidStudio中文社区 ( 京ICP备06021553号 )  

资源: 安卓 | Android | 社区 | 问答 | APP | WEB | SEO | ASO | 软件外包 |

© 2013-2014 Android Studio

快速回复 返回顶部 返回列表