欢迎 longtian001 加入本站!
 免费注册  用户登陆  汇款方式  汇款确认  产品报价  联系我们  帮助中心
加入收藏
设为首页
会员体系
申请VIP
网站首页 光盘超市 软件下载 技术文章 专题 用户中心 VIP会员 技术论坛 网站留言 娱乐中心 卓越资源
今天是:2009年01月08日 星期四  您现在位于: 首页 → 技术文章 → 不用临时变量交换两个数...
   不用临时变量交换两个数的值
作者:raincatss  出处:raincatss.cublog.cn  更新时间: 2007年05月31日 
当要交换两个数的值时,通常的做法是定义一个临时变量,然后再进行交换。那么能不能不用临时变量而交换两个数的值呢?可以的!C语言提供的异或运算就可以实现这样的操作。
 
异或运算符^也称XOR运算符,它的规则是若参加运算的两个二进位同号,则结果为0(假);异号为1(真)。即0 ^ 0 = 0, 0 ^ 1 = 1, 1 ^ 0 = 1, 1 ^ 1 = 0。
 
例:

#include <stdio.h>

int main(int argc, char *argv[])
{
    int a = 2, b = 6;

    a = a ^ b;
    b = b ^ a;
    a = a ^ b;

    printf("a = %d b = %d\n", a, b);

    return 0;
}

结果如下:

a = 6 b = 2

分析:

前两个赋值语句:“a = a ^ b;”和“b = b ^ a;”相当于b = b ^ (a ^ b),而b ^ a ^ b等于a ^ b ^ b。b ^ b的结果为0,因为同一个数与相向相^,结果必为0。因此b的值等于a ^ 0,即a,其值为2。

再执行第三个赋值语句:“a = a ^ b”。由于a的值等于(a ^ b),b的值等于(b ^ a ^ b),因此,相当于a = a ^ b ^ b ^ a ^ b,即a的值等于a ^ a ^ b ^ b ^ b,等于b。

 (本文已被浏览 2947 次)
 发布人:sdccf
 → 推荐给我的好友
上篇文章:多边形游戏的动态规划解法
下篇文章:判断无符号整数的二进制表示中1的个数
 相关文章:
Linux系统中增加Swap分区文件步骤方法 揭开Linux的Swap之谜
e680i中使用swap分区 Linux中增加Swap分区文件的步骤方法
如何降低Linux 内存开销 揭开Linux的Swap之谜
交换分区实验 交换文件实验
不用swap分区,用交换文件 揭开Linux的Swap之谜
揭开Linux的Swap之谜 Linux磁盘存储区管理原理与技巧
UNIX系统交换区的管理

相关搜索
查看百度中关于不用临时变量交换两个数的值的更多内容
查看google中关于不用临时变量交换两个数的值的更多内容
   文章分类
操作系统 |
SCO_UNIX  Sun_Solaris  IBM_AIX  HP_UX  Linux  BSD  Tru64_UNIX 
通用UNIX知识  Windows  Minix 
程序设计 |
Shell编程  C/C++  汇编  PHP  JAVA  Perl  Python 
ASP/HTML  XML  中间件 
数据库 |
Oracle  Informix  Sybase  Fox  DB2  SQL  MySQL 
PostgreSQL 
网络应用 |
网络应用 
计算机硬件 |
计算机主机  打印机  路由器  交换机  终端  磁带机  MO 
刻录机  终端服务器  调制解调器 
   文章评论
  → 评论内容 (点击查看)   共1条评论,每页显示5条评论   浏览所有评论
 2007-06-09  丁枫  丁枫 的电子邮件:y2005062020@tom.com
评:用的着吗,好多年前用tc时为了和同学比,就想出来了啊
比上边要直观好多啊!
当然也是有前提的,看看吧:
int a, b;
a = 2;
b = 3;
a += b;
b = a - b;
a -= b;
  → 发表我的评论
您的姓名: 您的Email:
评论内容:
250字内
发表评论:      发表评论须知 →
  • 尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法;
  • 本站有权保留或删除您发表的任何评论内容;
  • 关于我们 ┋  网站留言 ┋  网站地图 ┋  友情链接 ┋  与我在线 ┋  汇款确认 ┋  管理 ┋  TOP
    Unix爱好者家园  http://www.unix-cd.com/
    联系我们:sdccf@163.com
    腾讯QQ: 7644599
    备案序号:鲁ICP备05000455号
    Copyright (c) 2001-2008 Unix-cd.com. All Rights Reserved.