【转】C:经典技巧,不用临时变量,交换变量值

【转】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

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

转载于:https://www.cnblogs.com/ZzzZzz/archive/2011/12/30/2307921.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/110495.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Django Django_django queryset合并

    Django Django_django queryset合并前言我们通常做查询操作的时候,都是通过模型名字.objects的方式进行操作。其实模型名字.objects是一个django.db.models.manager.Manager对象,而Manager

  • Ubuntu 20.04 安装 Docker

    Ubuntu 20.04 安装 Docker检查Ubuntu内核docker需要ubuntu的内核高于3.10uname-rDocker安装#新增更新源sudoecho”debhttps://download.docker.com/linux/ubuntuzestyedge”>/etc/apt/sources.list#step1:安装必要的一些系统工具sudoapt-getupdatesudoapt-get-yinstallapt-transport-httpsca-certi

  • 资源网站链接_资源库在线

    资源网站链接_资源库在线1.rpm包下载www.rpmfind.netftp://rpmfind.net/linux2.根据依赖的库文件,查找相应的rpm包https://pkgs.org/3.Cacti相关监控模板https://docs.cacti.net/templates4.percona各版本备份数据工具下载(innobackupex、xtrabackup等)https…

  • open函数打开文件方式

    open函数打开文件方式r:以只读方式打开文件。文件的指针将会放在文件的开头。这是**默认模式**。rb:以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。r+:打开一个文件用于读写。文件指针将会放在文件的开头。rb+:以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。w:打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。wb:以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。.

  • 复试–完数

    复试–完数

  • 动态规划应用–最长递增子序列 LeetCode 300[通俗易懂]

    动态规划应用–最长递增子序列 LeetCode 300[通俗易懂]文章目录1.问题描述2.解题思路2.1回溯法求解2.2动态规划1.问题描述有一个数字序列包含n个不同的数字,如何求出这个序列中的最长递增子序列长度?比如2,9,3,6,5,1,7这样一组数字序列,它的最长递增子序列就是2,3,5,7,所以最长递增子序列的长度是4。2.解题思路2.1回溯法求解/***@description:最长递增子序列*@author:m…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号