无中间变量交换swap(a,b)】的更多相关文章

#include <stdio.h> /* 加减法 整型.浮点型(损失精度) */ void swap1(int *a,int *b) { *a=*a+*b; *b=*a-*b; *a=*a-*b; } /* 异或法 整型 */ void swap2(int *a,int *b) { *a=*a^*b; *b=*a^*b; *a=*a^*b; } /* 乘除法 整型.浮点型(损失精度),b!=0 */ void swap3(int *a,int *b) { *a=(*a)*(*b); *b=(…
从http://www.cnblogs.com/liuyitian/p/4081517.html#3074553看到一种无中间变量的值交换方式,具体如下: var a = 1;var b = 2;a = [b, b=a][0]alert(a+'_'+b) // 结果 2_1,a和b的值已经互换 端详代码,技巧是用一个匿名数组来储存和交换值,这种方式暗里需要新建数组的,它相对于新建变量我感觉时间空间上都没优势,可读性还差些.只是写法稍简短花哨一些.…
本文记录了不使用中间变量交换2个变量的value,很多的网络留言说是直接异或运算就可以了,而且效率很高,是真的吗? 这里简单的说一下我的环境:Win7 32位,Qt creator 5.4.1 编译器MinGW4.9.2 32bit 调试器:GNU GDB 7.8 关于这个问题,网络上面有很多的解释,3种方法,我这里给比较一下各自的优缺点,然后简单分析一下汇编代码,分析代码如下: #include <stdio.h> void swap1(int &a,int &b) { in…
cb14a_c++_顺序容器的操作7_赋值与交换(swap) vector数据赋值给list, slist.assign(svec.begin(), svec.end());//这样可以转 svec->slist c1=c2; //c2容器的数据赋值给c1c1.swap(c2); //c1与c2数据交换c.assign(b,e); //用于赋值,类型兼容就可以 svec.assign(slist.begin(), slist.end()); //string不能转成字符指针,指针可以转strin…
无缓存交换 牛客网 程序员面试金典 C++ Python 题目描述 请编写一个函数,函数内不使用任何临时变量,直接交换两个数的值. 给定一个int数组AB,其第零个元素和第一个元素为待交换的值,请返回交换后的数组. 测试样例: [1,2] 返回:[2,1] C++ class Exchange { public: //run:4ms memory:460k vector<int> exchangeAB(vector<int> AB) { AB[0] = AB[0]^AB[1]; A…
#include <iostream> using namespace std; int main () { ; ; cout<<"a="<<a<<",b="<<b<<endl; a = a+b; ///a=7 b = a-b; ///b=3; a = a-b; ///a=5 cout<<"a="<<a<<",b="&l…
num1=num1+num2; num2=num1-num2; num1=num1-num2;…
1.使用加法与减法交换两数值: #define SWAP(a, b) ((&(a) == &(b)) || \ (((a) -= (b)), ((b) += (a)), ((a) = (b) - (a)))) 这种交换数值a与b的方法没有使用临时变量,初始化检测a,b,如果在同一内存区,则被忽略,当然这通常不会发生,(编译器会忽略,然而无论如何都是一种优化),假如可以确 定溢出异常,于是传递无符号数异常就不会抛出. 下面的逻辑“或”运算的方法在某些机器上可能要快一些,不要使用浮点型数字.…
大家很熟悉知道,交换变量经常的使用的一种方法是使用第三个变量,也符合正常人的思维逻辑,但是还有其他的一些方法来实现,但是有点“偏门”,记住就好了.下面就列举这几种方法. 第一种方法,会用到参数的方法再来修稿. using System; namespace Exercise { class Program { private static void Main(string[] args) { ; ; int temp = num1; num1 = num2; num2 = temp; Conso…
//通过位异或来交换a,b的值 #include <stdio.h> int main(int argc, const char * argv[]) {    int a=20,b=10;    a=a^b;    b=b^a;    a=a^b;        printf("%d",a);    printf("%d\n",b);    return 0;} //通过c来交换 #include <stdio.h> int main(int…