`
东边日出西边雨
  • 浏览: 262226 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

交换两个数字的值(不用临时变量)

 
阅读更多

c语言, 有两个int型的数字,怎么样不用临时变量交换两个数字的值?

 

用如下方法即可:

 

int a = 10;
int b = 20;

a = a^b;
b = a^b;
a = a^b;

printf("%d %d\n", a, b);

 

result:

   20 10

 

这是为什么呢?

 

首先得理解“异或操作”, 异或是一种位操作,相同的位异或结果是0, 不同的位异或结果为1.

在第一个 a = a^b后,a的值其实保存了a, b两个变量之间的比较结果,也可以理解为a, b两变量的差异。

这时根据b和保存了差异的变量,可以推导出最初的a变量的值, 就是  b = a^b. 然后再类似的可以推导出b的值。

 

整个过程如下图:

 

                                             10                              20

        开始                              a                                b

第一次运算 a=a^b                                   a              b

第二次运算 b=a^b                 b                a

第三次运算 a=a^b                 b                                a

 

 

分享到:
评论

相关推荐

    交换两个数字

    ### 交换两个数字 #### 知识点概览 本文将详细介绍如何在C++中实现两个数字的交换,特别关注不使用额外指针的方式。主要分为两种方法:一种是通过值传递来尝试交换(该方法在函数作用域内有效但不会改变原始变量的...

    用C#语言实现两个数的交换

    最传统的交换两个数的方法是引入一个临时变量。例如,我们有变量`a`和`b`,我们想把`a`的值赋给`b`,再把`b`的初始值赋给`a`。这可以通过以下步骤实现: ```csharp int a = 5; int b = 10; // 创建临时变量...

    python数字金字塔-31-交换变量的值之方法二.ev4.rar

    在Python编程语言中,交换两个变量的值是一个常见的操作,特别是在处理数据或执行算法时。在本主题"python数字金字塔-31-交换变量的值之方法二"中,我们将探讨除了传统的方法(如使用临时变量)之外的另一种方法来...

    Java 程序交换两个数字.docx

    Java 程序交换两个数字的方法主要有三种:使用第三个变量、不使用额外变量以及使用异或操作。下面分别详细介绍这三种方法。 1. 使用第三个变量交换值 这种方法是最直观的,也是大多数初学者首选的方式。它涉及到...

    将两个数字交换位置,C#的实现源程序

    交换两个数字的基本思路是使用一个临时变量来保存其中一个数字,然后将另一个数字赋值给第一个位置,最后将临时变量的值赋给第二个位置。以下是一个简单的C#代码示例: ```csharp int num1 = 10; int num2 = 20; /...

    PHP不用第三变量交换2个变量的值的解决方法

    在编程过程中,经常会遇到需要交换两个变量的值的情况。通常情况下,人们会借助一个临时的第三变量来完成这一操作。但在某些特定场景,比如面试题目的限制或者是为了避免创建额外的临时变量,我们需要寻找不使用第三...

    JavaScript两个变量交换值的实现方法

    在JavaScript中,进行两个变量间值的交换是一项基本的操作,它在编程中经常出现,尤其是在处理数据交换、算法设计、数组排序等功能时。传统的变量值交换方法通常需要借助一个临时变量来完成。然而,存在多种不使用...

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

    给定的代码中还包含了一个用于交换两个整数值的函数`swap`。 #### 函数实现 ```c int swap(int a, int b) { cout ()" ; cout ; a = a + b; b = a - b; a = a - b; cout ()" ; cout ; return 0; } ``` 在这...

    两数交换的三种方法C#_java 两数交换的三种方法 两数交换方法

    代码首先初始化两个整型变量A和B,分别赋值为2和3。然后,依次执行上述三种交换方法,并在每次交换后打印A和B的值,以便观察结果。 同样,在C#示例代码中,也实现了相同的逻辑。通过点击事件触发,演示了使用临时...

    易语言源码易语言文本变量交换源码.rar

    文本变量交换通常涉及两个或多个变量之间的值互换,这是一个常见的操作,特别是在需要重新排列或排序数据时。 在源码中,我们可以预期看到如何定义和使用文本变量,以及如何实现这些变量的交换。易语言提供了多种...

    新手入门的小程序两数交换

    // 初始化两个数字 Num1 := 5; Num2 := 10; // 显示交换前的值 ShowMessage('Before swap: Num1 = ' + IntToStr(Num1) + ', Num2 = ' + IntToStr(Num2)); // 使用临时变量Temp进行交换 Temp := Num1; Num1...

    详解JS几种变量交换方式以及性能分析对比

    它指的是将两个变量的值进行互换,而不借助于临时变量。随着前端技术的发展,出现了多种变量交换方法。这些方法各有优劣,从易用性到性能都有所不同。本文将详细介绍几种常见的JavaScript变量交换方法,并通过实际...

    JavaScript交换变量常用4种方法解析

    传统上,交换两个变量的值通常需要一个临时变量。我们可以创建一个临时变量`temp`来存储`a`的值,然后将`b`的值赋给`a`,最后将`temp`的值赋给`b`: ```javascript let a = 1; let b = 2; let temp; temp = a;...

    7个大一C语言必学的程序C语言经典代码大全.docx

    这些代码涵盖了打印素数、输出乘法口诀表、判断闰年、交换变量、求最大值、排序三个数和求两个数的最大公约数等多个方面。 程序一:打印100到200之间的素数 该程序使用了两层循环来判断数字是否为素数。如果数字不...

    利用数组对数字进行逆序交换.zip

    // 将临时变量的值赋给末尾元素 } } void printArray(int arr[], int n) { for (int i = 0; i ; i++) { printf("%d ", arr[i]); } printf("\n"); } int main() { int nums[] = {1, 2, 3, 4, 5}; int size ...

    Java 变量和数据类型

    当需要交换两个变量的值时,通常需要一个临时变量作为中介。例如,交换两个整数变量`num1`和`num2`的值: ```java int num1 = 19; int num2 = 89; int temp; temp = num1; num1 = num2; num2 = temp; ...

    Web前端开发技术-变量的命名规范.pptx

    举例说明,下面是一个使用变量交换两个值的经典案例: ```javascript var temp; // 临时变量 var apple1 = '青苹果'; // 第一个苹果 var apple2 = '红苹果'; // 第二个苹果 // 使用temp临时存储apple1的值 temp = ...

    JavaScript交换变量的常用方法小结【4种方法】

    按位XOR运算符`^`可以用于交换两个整数变量的值,无需额外的变量。它利用了XOR的两个特性:相同的数字XOR得到0,数字与0XOR保持不变。步骤如下: ```javascript let a = 1; let b = 2; a = a ^ b; b = a ^ b; ...

    初学C语言常用简单程序代码.pdf

    `定义了四个整数变量,`scanf`函数用于输入三个数字,然后使用临时变量来交换三个数字的值。 4. switch语句的运用 该程序使用switch语句来根据输入的数字输出对应的值。 代码中,`int a,m;`定义了两个整数变量,`...

Global site tag (gtag.js) - Google Analytics