C语言——交换两个int变量的值,不能使用第三个变量。

交换两个int变量的值,不能使用第三个变量。即 a=3,b=5,交换之后a=5,b=3;

cpp 复制代码
#include<stdio.h>
int main()
{
    int a=3;
    int b=5;
    printf("a=%d b=%d\n",a,b);
    a=a^b;
    b=a^b;
    a=a^b;
    printf("a=%d b=%d\n",a,b);
}

"^"------按位异或操作符,这里的按位的位指的是操作数二进制的位,相同为0相异为1.

3的二进制位为:0000 0000 0000 00011

5的二进制位为:0000 0000 0000 00101

注:

1、任何数按位异或自己本身都为0

cpp 复制代码
int a=3;
a^a=a;

2、0与任何数按位异或都为异或的那个数

cpp 复制代码
int a=3;
0^a=a;

输出的答案:

相关推荐
顺风尿一寸34 分钟前
从 Java NIO poll 到 Linux 内核 poll:一次系统调用的完整旅程
java
程途知微37 分钟前
JVM运行时数据区各区域作用与溢出原理
java
华仔啊3 小时前
为啥不用 MP 的 saveOrUpdateBatch?MySQL 一条 SQL 批量增改才是最优解
java·后端
千寻girling5 小时前
Python 是用来做 AI 人工智能 的 , 不适合开发 Web 网站 | 《Web框架》
人工智能·后端·算法
xiaoye20185 小时前
Lettuce连接模型、命令执行、Pipeline 浅析
java
颜酱8 小时前
一步步实现字符串计算器:从「转整数」到「带括号与优化」
javascript·后端·算法
beata8 小时前
Java基础-18:Java开发中的常用设计模式:深入解析与实战应用
java·后端
Seven979 小时前
剑指offer-81、⼆叉搜索树的最近公共祖先
java
雨中飘荡的记忆1 天前
保证金系统入门到实战
java·后端
Nyarlathotep01131 天前
Java内存模型
java