无意中 1篇博文,介绍这个问题,引发了我的兴趣。
博文中 介绍了 3种方法:
1.
2.
3
第1种方法 和第2种方法 的原理都是1样的,就是 根据 (a) - (b) 的结果 的 符号位 来判断 的,但是 疏忽了 类型的问题,在不同的机型上 int 可以是 16 位 或 32 位,
long 可以是 32 位 或 64位 ,用 1<<31 或 0x80000000 和 (a) - (b) 来进行 & 运算 都是 不适合的。
第3种方法正好解决了 上面的问题。但是 疏忽了 浮点型问题。
所以 最好的方法 是 将 abs 换成 fabs
下面 来讲另外一个话题: 假定 有 int a = 7 , int b = 8 ,不用 第3个数 来 交换 a,b
答案: