通过运算符交换两个值

   
<span style="font-size:24px;">#include<stdio.h>

void main()
{
  char a = 20;
  char b = 10;

  char c = a^b;
  a = c^a;
  b = c^a;


  printf("%d,%d",a,b);
  system("pause");
}</span>



通过异或的简单操作就可以把a与b的值交换,其实原理跟 int a = 5,int b = 8,int c = a+b,a = c-b,b= c-a是一样的。

通过运算符交换两个变量的方法有以下几种: ### 位运算符(异或运算) 在 JavaScript 和 Java 中都可以使用异或运算符 `^` 来交换两个变量的。异或运算的原理是相同为 0,不同为 1。以 Java 代码为例: ```java class BitTest{ public static void main(String[] args){ int num1 = 10; int num2 = 20; System.out.println("num1 = " + num1 + ",num2 = " + num2); num1 = num1 ^ num2; num2 = num1 ^ num2; num1 = num1 ^ num2; System.out.println("num1 = " + num1 + ",num2 = " + num2); } } ``` 其运算步骤解释如下: - 第一步:`num1 = num1 ^ num2`,此时 `num1` 保存了 `num1 ^ num2` 的。 - 第二步:`num2 = num1 ^ num2`,将赋号右边的 `num1` 用 `num1 ^ num2` 替,得到 `(num1^num2)^num2 = num1 ^(num2^num2) = num1^0 = num1`,即经过这步运算后 `num2` 中的为原来的 `num1`。 - 第三步:`num1 = num1 ^ num2`,此时赋号右边的 `num1` 是 `num1 ^ num2` 的,`num2` 是原来的 `num1`,将赋号右边的 `num1` 用 `num1 ^ num2` 替,得到 `(num1^num2)^num1 = num2 ^(num1^num1) = num2^0 = num2`,即经过这步运算后 `num1` 中的为原来的 `num2` [^3][^4]。 ### 算术运算符 可以使用加法和减法运算符交换两个变量的。例如: ```python a = 5 b = 10 a = a + b b = a - b a = a - b print(f"a = {a}, b = {b}") ``` 其原理是把 `a` 和 `b` 想象为内存中的地址,按算术运算的逻辑来交换。假设 `a` 和 `b` 是两个变量,首先 `a = a + b` 计算出两数之和,然后 `b = a - b` 得到原来 `a` 的,最后 `a = a - b` 得到原来 `b` 的 [^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值