不用临时变量交换两个数的值
http://blog.csdn.net/minglois/archive/2009/07/29/4391514.aspx
引用
当要交换两个数的值时,通常的做法是定义一个临时变量,然后再进行交换。那么能不能不用临时变量而交换两个数的值呢?可以的!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。
分享到:
相关推荐
概要 本文主要描述,如何不使用中间值,将两个变量的值进行交换。 一、普通做法 var a = 1, b = 2, ...通过算术运算过程中的技巧,可以巧妙地将两个值进行互换。但是,有个缺点就是变量数据溢出。
这篇文章主要介绍了JavaScript交换两个变量方法实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在平时的业务开发或者面试过程中,经常会遇到交换两个变量...
下面的方案都不会有临时变量,我总结了一下,其实不使用临时变量的思路都是让其中一个变量变成一个a和b都有关系的值,这样可以先改变另一个变量值, 最后改变原修改的变量值 比如这个 a += b; b = a - b; a
为避免误触发,有些改为了txt格式,使用时请自行查看业务然后改为bat格式即可。
大部分语言,例如c语言,交换两个变量的值需要使用中间变量。 例如交换a,b 伪代码: tmp = a a = b b = tmp python里面可以实现无临时变量的交换 (a,b) = (b,a) 对于它的交换原理我深感好奇,因为这意味着python...
将两个值相乘,并把结果赋值给新的变量 弹出警示框,把结果输出。 2.4. 综合练习 4、判断用户是否有内容输入 2.4. 综合练习 4、判断用户是否有内容输入 使用boolean()来进行分析 用户单击确定按钮
c#中实现两个int变量的数值互换,在借助第三个变量做临时载体的情况下,非常简单。 int a = 10; int b = 5; int c ; c = a; a = b; b = c; 如果不借助第三方变量,有几种实现的方法: 1....
先说变量数值交换,从C语言开始,我们就知道要先设置一个临时变量,再把某元素的值覆盖此临时变量,避免临时覆盖等,如果不设置临时变量,还有位运算的交换形式 然而Python中根本就不用这么复杂,如果要交换变量e1,...
将两个变量的值互相交换,但不允许借助任何其他变量临时存放其中的任何一个变量值。这称为“无参数交换”。 据说是交换的最高境界。
1.5.6. 输入两个整数 n 和 m,从数列 1,2,3.......n 中 随意取几个数 ....... 116 1.5.7. 输入一个表示整数的字符串,把该字符串转换成整数并输出.............. 118 1.5.8. 给出一个数列,找出其中最长的单调...
而如果两 个元素的值相等、但元素在位置上并没有相邻,那么即使通过前面的两两交换把两个元素相 邻起来,这时候也不会对它们进行交换。所以相同元素值的两个元素的前后顺序在此算法中 并没有被改变,故冒泡排序是一...
它不需要临时变量就可以交换a和b的值。 3.5 可否用显式括号来强制执行我所需要的计算顺序并控制相关的副作用?就算括号不行,操作符优先级是否能够控制计算顺序呢? 3.6 可是&&和||操作符呢?我看到过类似while...
1. 把一个链表反向,递归,非递归都写一遍。 1.试编写3个函数实现 (1)建立一个双向链表 (2)插入一个节点 ...24.编最优化Bubble(int *pIntArray,int L),要求:交换元素不能用临时变量,如果有序需要最优。
交换两个变量的值而不使用临时变量.bat 交换两个变量的值而不使用临时变量.cmd 人民币大小写互转程序.cmd 人民币金额小写转大写.cmd 今天访问过的程序文件所在目录.cmd 以文件夹名为名建立文本文件.cmd 使用WMI别名...
它不需要临时变量就可以交换a和b的值。 34 3.5 可否用显式括号来强制执行我所需要的计算顺序并控制相关的副作用?就算括号不行,操作符优先级是否能够控制计算顺序呢? 35 3.6 可是&&和||操作符呢?我看到过...
实例182 使用指针交换两个数组 中的最大值 257 实例183 输出二维数组有关值 259 实例184 输出二维数组任一行 任一列值 260 实例185 将若干字符串按照字母 顺序输出 262 实例186 用指向函数的指针比较大小 263 实例...
o 4.4 这是个巧妙的表达式: a ^= b ^= a ^= b 它不需要临时变量就可以交换 a 和 b 的值。 o 4.5 我可否用括号来强制执行我所需要的计算顺序? o 4.6 可是 && 和 || 运算符呢?我看到过类似 while((c = getchar())...