zoukankan      html  css  js  c++  java
  • 【转】C:经典技巧,不用临时变量,交换变量值

    C:经典技巧,交换两个变量的值
    十二月 30th, 2011 § 3 comments
    40;

    一般交换变量值都会这样做:
    void swap(int* a, int* b)
    {
    int temp;

    temp = *a;

    *a = *b;

    *b = temp;

    }
    -------------------------------------------------------------------------------------------------------------------
    下面是转帖 -->
    下面这段代码的精妙就在于,它没有使用临时变量,并且相对于普通的方法不容易出错。
    这是一个面试题的结果,题目是,请用一段代码交换两个整数的值。
    x = x ^ y ;
    y = x ^ y ;
    x = x ^ y ;
    与此相类似的还有一种方法,下面这段代码则是我自己想到的。
    x = x + y ;
    y = x – y ;
    x = x – y ;
    (操作符‘^’代表C/C++语言中的位运算符——异或)
    然而,还有一种方法:下面这种更为优雅的写法和上面第一种写法是等价的:
    x ^= y ^= x ^= y ;
    -------------------------------------------------------------------------------------------------------------------
    转自:www.limou.net


    感悟:
    这种方法的优点在于不使用指针,指针具有危险性。这种方法简便没有危险性。
    看得出来任何微小的地方都有创新,编程的时候要多思考。

  • 相关阅读:
    spring注解集合
    spring工作原理理解
    Linux下mysql命令 导入 导出sql文件
    List和Set排序的实现
    LeetCode--树
    LeetCode--链表
    LeetCode--字符串
    LeetCode--贪心算法
    LeetCode--数组
    数据库编程基本练习题
  • 原文地址:https://www.cnblogs.com/ZzzZzz/p/2307921.html
Copyright © 2011-2022 走看看