C语言中交换数据——这个您想不到,其实可以想到的
2011-08-22 17:11
357 查看
关于交换数据,第一个想到的是利用中间变量。
再想想还能想到的是 加法吧,如果再想想的话可能又会有地址之类的,但是您想过没有
相信想到加法的人有50%
能想到加法会溢出的人只有 1%吧。。。
我真的没有想到,能看到真的是幸运的了,哈哈
这个例子最简单不过了,但是折射的道理却非常的重要,我们往往在想过一个问题的解决方案之后,就高兴的过头了,忘记了对这个方案的优化,
哪怕是略微的想想,其实这些发现都很简单,却经常笨人所忽略。。。。。
粗细。。???是吗?
再想想还能想到的是 加法吧,如果再想想的话可能又会有地址之类的,但是您想过没有
相信想到加法的人有50%
能想到加法会溢出的人只有 1%吧。。。
我真的没有想到,能看到真的是幸运的了,哈哈
/************************************************************************/ /* purpose:learn how to swith number with most efficient */ /* contact:guozhengqian0825@126.com */ /* data :2011.08.22 */ /* author:qianguozheng (钱国正) */ /************************************************************************/ #include "stdio.h" void main() { int a=10; int b=20; printf("before switch: a=%d,b=%d\n",a,b); /*method one : is the best one!*/ a=a^b;//a=00001010 b=a^b;//b=00010100 a=a^b; printf("after switch: a=%d,b=%d\n",a,b); /* a=00001010 b=00010100 a=a^b=00011110 b=00010100 b=a^b=00001010=10 a=00011110 a=a^b=00010100=20 */ /*method two */ /*compare to method one ,the shortback is that : when a is the max of the type and b is the max of the typw two it will full overflow(溢出) */ a=a+b; b=a-b; b=a-b; printf("after switch: a=%d,b=%d\n",a,b); /*method three*/ int tmp; tmp =a ; a=b; b=tmp; /*this is the normal ,anyone who is called programme can do that*/ /*i will not show others to you ,just remember the first one is enough*/ }
这个例子最简单不过了,但是折射的道理却非常的重要,我们往往在想过一个问题的解决方案之后,就高兴的过头了,忘记了对这个方案的优化,
哪怕是略微的想想,其实这些发现都很简单,却经常笨人所忽略。。。。。
粗细。。???是吗?
相关文章推荐
- jxl.jar 的百度百科,根据这个还是可以搞出来的,不过就是修改那块写的不是很好,修改其实可以直接读取数据并操作。
- 淘宝上的大智慧L2数据,月卡最便宜是8元钱,这个也可以获取BBD、DDX等数据!
- 其实添加数据也可以这样简单——表单的第三步抽象(针对UI及后置代码)
- 献给C语言初学者,必要知道的很重要的小程序(可以用这个在上QQ时耍你好友哦)
- 给定一个日期,输出这个日期是该年的第几天。输入数据有多组,每组占一行,数据格式为 YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。
- Problem Description 输入n(n<100)个数,找出其中最小的数,将它与最前面的数交换后输出这些数。 Input 输入数据有多组,每组占一行,每行的开始是一个整数n,表示这个测试实例的数值的个数,跟着就是n个整数。n=0表示输入的结束,不做处理。 Output 对于每组
- 久违的json使用大法 (通常Ajax希望返回多个键值对,可以用将要返回的数据先封装到一个对象中,再将这个对象转为json格式)
- c语言:从一组数据中选出可以组成三角形并且周长最长的三个数(简单)
- 如何爬取京东手机上万的商品数据,这个神器可以帮你
- XHTML 的一个实例, 其实这个实例的方法已经可以实现所有要实现的布局. by Emerald 绿色学院 - Green Institute
- 左右两个Select列表框交换数据的JS代码,上下左右都可以移动数据,还可以置顶、沉底,相信大家见到过,但觉得挺实用,与大家分享。
- 大数据早报:微软宣布推出新Azure机器学习工具 这个机器人可以像人类一样自然地行走(9.27)
- JSON数据格式交换 C语言cJSON开源
- 左右两个Select列表框交换数据的JS代码,上下左右都可以移动数据,还可以置顶、沉底
- 这个数据可以用来做质量分
- HDU 3123 题解,想到怎么做就不难了此题一开始没注意到long long数据的问题,最后没有除m WA了7次。幸亏最后发现了啊!这个AC来得太不容易了
- 在MyBatis的select、insert、update、delete这些元素中都提到了parameterType这个属性。MyBatis现在可以使用的parameterType有基本数据类型和Ja
- C语言构建WEB管理系统(六):使用XMLHttpRequest对象和服务端交换数据
- Java序列化时,静态的成员变量 "可以被拿到数据" 是因为 类加载器之前就把这个类加载好了,拿到的是加载好的数据
- 项目终于结束了,终于可以休息一下了,没有想到这个项目的周期这么长......