对一个整数取绝对值
如果不用到if-else, for, while, do-while
可以使用什么方法
我想到的都是会用到上列的限制...
请前辈指教 谢谢
#include<stdlib.h> int abs(int);
int pos = ((num < 0) ? (num * -1) : (num));
作者:
Caesar08 (Caesar)
2016-04-06 23:50:00能请问为什么不能用这些方法吗?
num = num & (~(1<<(sizeof(int)*8-1)));这样试试看?我刚想到的错了 ˊˋnum = ((~num) & (~(1 << (sizeof(int)*8 - 1)))) + 1还是不对
作者:
CaptainH (Cannon)
2016-04-07 04:32:00a*((a>0)*2-1)
其实龟毛点上面都算是if-else跟if不过C大的方法让我知道怎么简化了XD
作者:
EdisonX (卡卡兽)
2016-04-07 08:28:00-x = ~x + 1 ??
作者:
EdisonX (卡卡兽)
2016-04-07 08:31:00看错了,忽略我的 @@
作者:
CoNsTaR ((const *))
2016-04-08 02:36:00不就 num &= -num 就好了吗?对 int 应该是 OK 的呃…应该是(int)((unsigned)num &= (unsigned)-num) 才对
作者: jackalwei (旅人) 2016-04-08 10:06:00
想到最简单的做法就是,num*(1-2*符号)num为正,符号为0,就为num*1得解,反之*-1,负负得正,亦得解怎么找出符号,只要用shift就可以达成了
作者:
newInLA (newInLA)
2016-04-11 07:14:00没说不能用switch呀,ㄎㄎswitch(num < 0) case true: return (num * -1);
作者:
cobrasgo (人鱼线变成鲔鱼线,超帅)
2016-04-11 17:54:00switch里的严格讲来算是if else