在上基础班的时候 对于这块内容还是理解的比较透彻,不明白的同学可以没事看看,明白的朋友可以指教推荐。
谢谢光临~
下面是个人理解的4种方式:
方式1(通过创建第三方变量来交换两数之值)
int a=10;
int b=20;设置一个第三方变量 int temp;
int temp=a; //把 a 赋值给temp;
int a=b; // 把 b 赋值给a;
int b=temp; //把 temp中获取的a值 赋值 给 b
这样就成功转换 a,b两值。
方式2(通过异或的原理)
方式2//
a=a^b; //这里吧a^b的值 复制给了 a,
b=a^b; //a^b=a^b^b=a; 解释下:( 因为根据异或2次同一个数等于它本身的原理)这里的a指(a^b),
a=a^b; //a^b=a^b^a=b; 解释:看上一步骤,这里的b已经被上面的a赋值了,所以a^b 也就可以理解为 a^a,参照第一步,a之前被 a^b赋值。 所以结果就是 a^ (a^b) ==b; 这样通过异或就完成了不用第三方转换
根据原理(一个数异或2次同一个数等于它本身;
方式3(通过加减运算)
方式3//
给一个
int a=10;
int b=20;
a=a+b; //a=30
b=a-b; // b=10
a=a-b; // a=30-10=20;
通过a,b加减运算,不需要第三方变量 可完成转换
方式4(一步到位)
方式4//
同样给两个变量
int a=10;
int b=20;
a=(a+b)-(b=a); //只需要一步 即可转换a,b 的值
分析:
(b=a),指把 a赋值给b,首先一步转换
(a+b),值两数的和,
(a+b)-(b=a),指两数之和 减去 a (这里的a 是因为上面 b被a 赋值了) , 结果就是b
转换成功~~~ :):):)
|