`

C语言不通过第三个变量交换a、b两数数值的技巧

阅读更多

本文转自我的ChinaUnix博客:http://blog.chinaunix.net/u3/107162/showart_2190311.html

 2010-03-04

 

int a = 8, b = 9;
a = a^b;
b = b^a;
a = a^b;

// 现在a=9,b=8了

// 证明:1. 执行第一行,a的值为 a^b 了

// 2. 再执行第2行,b = b^a = b^(a^b) = a^b^b = a^0 = a,现在b的值为a了

// 3. 接着执行第3行,a = a^b = (a^b)^a = a^a^b = 0^b = b,现在a的值为b了

分享到:
评论

相关推荐

    C语言清屏代码不通过第三变量交换数值源代码

    C语言清屏代码不通过第三变量交换数值源代码 本篇文章将对C语言清屏代码不通过第三变量交换数值源代码进行详细的解释和分析。该代码主要用于实现多种清屏效果,包括开幕清屏、闭幕清屏、上清屏、下清屏、中清屏等。...

    每日一题:不适用第三个变量,实现交换两个输入参数1

    题目所给出的【标题】"每日一题:不适用第三个变量,实现交换两个输入参数1"和【描述】描述了一个这样的问题,要求编写一个名为`swap`的函数,该函数接受两个参数`a`和`b`,并且在不使用第三个变量的情况下交换它们...

    C语言程序设计之交换两个数的值

    在这个实现中,通过简单的数学运算完成了数值的交换,而没有使用额外的变量。这种方法避免了使用临时变量的空间开销。 ### 3. 字符串比较 虽然这部分代码使用了C++语法,但是核心逻辑仍然可以适用于C语言环境。...

    C语言数值算法程序大全(第二版)

    《C语言数值算法程序大全(第二版)》是一本深入探讨C语言在数值计算领域应用的专业书籍。在当今计算机科学中,C语言以其高效、灵活和底层控制的特点,被广泛用于编写高性能的数值计算程序。这本书是学习和实践C语言...

    用C语言求解N阶线性矩阵方程Ax=b的简单解法

    - **行变换**:对于第j列,通过第三类初等行变换交换行,使得ajj成为该列的最大值。然后,通过第二类初等行变换(除以ajj)将对角线上的其他元素变为0。 5. **计算过程**: 一旦得到上三角矩阵,通过回代法(back...

    C语言第四章顺序结构复习题.doc

    变量交换是C语言中的一个重要概念,指的是将两个变量的值交换。例如,x = x + y; y = x - y; x = x - y;就是将x和y的值交换。 知识点10:赋值语句的限制 赋值语句的限制是指赋值语句不能将非法值赋给变量。例如,...

    三个数的从大到小排序(C语言原代码)

    - 第三个`if`语句检查`b`(此时已经是经过前两个步骤处理后的值)是否小于`c`。如果是,则进行最后一次交换。 6. **输出结果**: ```c printf("%d %d %d", a, b, c); ``` 输出排序后的三个整数。 7. **暂停...

    C语言程序设计(第2版)-2期 单元3 数据操作源代码.pdf

    最后,例3-5展示了不使用中间变量交换两个外部变量的值。这种方法利用了算术运算的特性,通过 `a=a+b` 让 `a` 存储两数之和,接着 `b=a-b` 将 `a` 的值减去 `b` 的原值使 `b` 获取 `a` 的原值,最后 `a=a-b` 使 `a` ...

    《你必须知道的495个C语言问题》

    3.15 我要检查一个数是不是在另外两个数之间,为什么if(a b c)不行? 40 3.16 为什么如下的代码不对?int a=1000, b=1000; long int c=a * b; 40 3.17 为什么下面的代码总是给出0?double degC, degF; degC= ...

    C语言程序设计练习题(含程序及参考答案).pdf

    1. 定义一个函数 int fun(int a,int b,int c),它的功能是:若a,b,c能构成等边三角形函数返回3,若能构成等腰三角形函数返回2,若能构成一般三角形函数返回1,若不能构成三角形函数返回0。该函数使用了if-else语句来...

    abc.rar_ABC_abc互换C语言_roofjzo

    在C语言中,最传统的数值交换方法是通过第三个临时变量。以下是一个基本的示例: ```c #include void swap(int *a, int *b) { int temp; // 临时变量 temp = *a; // 将a的值存储到temp中 *a = *b; // 将b的值...

    C语言常用算法归纳.pdf

    1. **交换**:在C语言中,交换两个变量的值通常需要借助第三个变量。例如,如果要交换两个整数a和b的值,可以使用一个临时变量t。代码示例: ```c int a, b, t; scanf("%d%d", &a, &b); // 交换 t = a; a = b; b = t...

    如何判断三个数的大小(c程序设计)

    - 第三个 `if` 语句检查 `b` 是否小于 `c`,如果满足条件,则交换它们的值,确保三者之间的顺序。 6. **输出结果**:使用 `printf` 函数按照降序输出这三个整数。注意原代码中的 `printf` 使用了不正确的格式字符...

    c语言讲义(中文版)

    在变量交换问题中,通常有两种方法:一是借助第三方变量,二是不借助第三方变量。前者通过创建临时变量来实现交换,后者利用算术运算实现交换。 变量修饰符如`sizeof()`可以获取变量在内存中占用的字节数。不同类型...

    C语言程序设计_试卷

    - 第三步:`a`变为`4`,`b`最终变为`-2`。 6. **下面程序段段运行结果是。** - **代码:** ```c x = 2; do { printf("*"); x--; } while (!x == 0); ``` - **答案:** ** - 循环执行两次,每次输出一个星...

    你必须知道的495个C语言问题

    它不需要临时变量就可以交换a和b的值。 3.5 可否用显式括号来强制执行我所需要的计算顺序并控制相关的副作用?就算括号不行,操作符优先级是否能够控制计算顺序呢? 3.6 可是&&和||操作符呢?我看到过类似while...

Global site tag (gtag.js) - Google Analytics