`
wooyon
  • 浏览: 23551 次
  • 性别: Icon_minigender_1
  • 来自: XT
社区版块
存档分类
最新评论

怎样不用临时变量而交换两个变量的值?——看中文编程中的“完美”一例

阅读更多

怎样不用临时变量而交换两个变量的值?有多少种方法?听我慢慢道来......

要交换两个变量的值,在高级语言中,通常使用的方法是通三个赋值语句来实现:

t = a;    a = b;    b = t; //t为临时变量
而在“汇编年代”,为节省资源, 程序员会通过以下方法实现

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

妙吧,你还能想到其它方法吗? 没错,看下面

        a=a+b;   b=a-b; a=a-b;

在各种计算机语言中,前一种方法是通用的,而后两种方法则会受到类型限制,很明显异或(^)运算只适用于整型,第三种虽同时适用于整型和浮点型,却不适用于引用类型;

有完美解决方法吗?答案在http://hi.baidu.com/liugaotian/blog/item/bd0bae3e0d63d13870cf6ce8.html哈,广告完毕,继续......

中语暂以此名指代本计算机语言)中,你可以通过连续赋值语句完成

       a, b = b, a;

理论上,它相对前几种方法更高效(简明自不必提了:),此外它具有第一种方法的通用性特点,故而堪称完美。

附中语实现源代码:(交换变量.yesi)


公有 元 示例 {

公有 共享(字串[] 起始参数列表){
   中整 a=1, b=2;
   printf("变量a\t变量b \n");
   printf("------------ 0> t= a;    a = b;    b = t;\n");
   t=a ; a=b; b=t;
   printf(" %s\t %s\n", a, b);
  
   printf("------------ 1>   a ^= b;    b ^= a;    a ^= b;\n");
   a^= b;    b ^= a;    a ^= b;
   printf(" %s\t %s\n", a, b);
  
   printf("------------ 2>   a=a+b;   b=a-b; a=a-b;\n");
   a=a+b;   b=a-b; a=a-b;
   printf(" %s\t %s\n", a, b);
  
  
   printf("------------ 3> a ,b = b , a;\n");
   a ,b = b , a;
   printf(" %s\t %s\n", a, b);
  
}

共享 中整 t;

私有 共享 空型 printf(字串 格式, 对象[] 参数列表 ...){
    System.out.printf(格式,参数列表);
}

}

相关图片(看不到时,点击看原图或到http://hi.baidu.com/liugaotian 查看)

中语编程技巧

  • 描述: 中语编程技巧
  • 大小: 168.2 KB
分享到:
评论
1 楼 xiol 2014-03-15  
小白用户请教:
"第三种虽同时适用于整型和浮点型,却不适用于引用类型",
为什么不适用于引用类型

相关推荐

    LabView图形化编程语言之生成二维码——2例.zip

    在"LabView图形化编程语言之生成二维码——2例.zip"这个压缩包中,我们可能找到两个关于在LabView中生成二维码的实例。 1. 二维码基础知识:二维码(Quick Response Code)是一种二维条形码,能够存储大量的文字、...

    对C语言函数参数传递的探讨——以交换问题为例.pdf

    在文章提供的例子中,通过定义一个swap函数来交换两个整数变量的值,由于使用了值传递,所以实际参数的值并未发生改变。 与此相对的是地址传递,当函数的实参为变量的地址时,形参会接收这个地址值。因此,形参和...

    C学习必备——C案例教程源程序

    这里展示了如何通过这种方法交换两个整数变量 `a` 和 `b` 的值。 2.2.5 四舍五入 这个例子使用了`<math.h>`库中的`floor`函数来实现四舍五入。输入一个浮点数,乘以100后再加0.5,然后向下取整再除以100,从而得到...

    12.MATLAB优化与控制模型代码 基于遗传算法的优化计算——建模自变量降维代码.zip

    4. 遗传操作:包括交叉(两个解交换部分特征)和变异(随机改变解的部分特征),以保持种群多样性。 5. 重复步骤2-4,直到满足停止条件,如达到预设的迭代次数、适应度阈值或改进幅度阈值。 在MATLAB中,`ga`函数...

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

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

    认知心理学在教学中的应用——C语言程序设计为例.pdf

    学生在理解了变量交换的概念后,教师可以进一步指导学生将这一概念应用到具体的编程任务中,如编写C语言代码实现变量值的互换。这个过程中,学生不仅学习了编程技能,还锻炼了解决问题的思维。 此外,认知心理学还...

    单片机C语言程序设计实训100例——基于8051+Proteus仿真

    9. **案例分析**:在“JH《单片机C语言程序设计实训100例——基于8051+Proteus仿真》案例压缩包”中,包含了一系列实践案例,涵盖了以上知识点的综合运用。每个案例都包括了电路图和C语言代码,是学习和提升的关键...

    编程魔法师DELPHI 入门实战百例

    ### 编程魔法师DELPHI 入门实战百例 #### 一、Delphi概述及初体验 **1.1 Delphi概述** Delphi是一种基于Object Pascal语言的快速应用程序开发工具,由Borland公司(现已被Embarcadero Technologies收购)开发。它...

    C语言100例 题目

    在众多C语言学习资料中,《C语言100例》通过具体的编程题目,为初学者提供了一个全面的实践平台。本文将深入分析该书中五个具有代表性的编程实例,展示C语言的基础编程技巧和逻辑处理能力。 首先,我们将目光投向第...

    Python基础知识笔试.pdf

    `x,y=y,x` —— 这是一个有效的表达式,用于交换两个变量的值。 - D. `x+=y` —— 这是一个有效的加法赋值表达式。 **知识点**: 在Python中,你可以同时给多个变量赋相同的值或使用简单的换值方法。但是,在赋值...

    C语言100例

    #### 第一例:数字排列组合 **标题与描述中的知识点:** 此例展示了如何通过嵌套循环在C语言中生成不同的三位数,确保每一位数字都是唯一的。 **详细说明:** 这段代码通过三层`for`循环实现了对数字1到4的排列组合...

    iOS游戏应用源代码——arronhunt-Yay-Stary-7400583.zip

    《iOS游戏应用源代码解析——基于arronhunt-Yay-Stary-7400583.zip》 本文将深入探讨iOS游戏应用的源代码,以"arronhunt-Yay-Stary-7400583.zip"为例,解析其中蕴含的关键技术点和编程理念。在iOS开发领域,游戏...

    冒泡排序——C++代码

    - 为了提高效率,可以添加一个布尔变量`swapped`来跟踪每一轮是否进行了交换。如果一轮结束后没有交换,说明数组已经有序,可以提前结束排序。 3. **示例代码**: ```cpp #include void bubbleSort(int arr[]...

    有关C语言初学基本程序

    在C语言中,任何非零的值都被认为是真,而零值则是假。这个概念在编写控制流程时非常重要,因为它决定了程序的执行路径。 排序算法是编程中的一项基本技能。冒泡排序是最简单的排序算法之一,通过相邻元素的比较和...

    C程序设计教程与实验指导杨国兴模板学习教案.pptx

    例如,`swap`函数可以用于交换不同数据类型(如`char`,`int`,`float`)的变量,但每个特定类型都需要一个独立的函数实现。函数模板的引入解决了这个问题。模板定义了一个通用的函数,其中`T`是一个类型参数,...

    指针与函数PPT学习教案.pptx

    在C语言中,指针和函数是两个非常重要的概念,它们可以组合成强大的工具——指向函数的指针。这种机制允许我们动态地决定调用哪个函数,增加了代码的灵活性和可扩展性。以下是对指针与函数关系的深入探讨。 首先,...

    C语言泛型编程实例教程

    看下面的一个实现交换两个元素内容的函数swap,以整型int为例: void swap(int* i1,int* i2){ int temp; temp = *i1; *i1 = *i2; *i2 = temp; } 当你想交换两个char类型时,你还得重写一个参数类型为char的...

    C#微软培训资料

    1.1 Microsoft.NET——一场新的革命.4 1.2 .NET 与 C#.6 1.3 C#语言的特点.8 1.4 小 结 .11 第二章 运行环境 全面了解.NET.12 2.1 .NET 结构.12 2.2 公用语言运行时环境与公用语言规范.13 2.3 开 发 ...

Global site tag (gtag.js) - Google Analytics