→ Hazukashiine: #include<stdlib.h> int abs(int); 04/06 23:35
→ james732: goto (?) 04/06 23:39
→ Hazukashiine: int pos = ((num < 0) ? (num * -1) : (num)); 04/06 23:41
→ Frozenmouse: 補數? 04/06 23:48
→ Caesar08: 能請問為甚麼不能用這些方法嗎? 04/06 23:50
→ Schottky: 應該是跟人打賭吧,接受板眾插花嗎? 04/06 23:51
→ x000032001: 相乘再開根號就好啦 國中就有教了(被打 04/07 00:05
推 TobyH4cker: num = num & (~(1<<(sizeof(int)*8-1))); 04/07 00:23
→ TobyH4cker: 這樣試試看?我剛想到的 04/07 00:23
→ TobyH4cker: 錯了 ˊˋ 04/07 00:25
→ TobyH4cker: num = ((~num) & (~(1 << (sizeof(int)*8 - 1)))) + 1 04/07 00:25
→ TobyH4cker: 還是不對 04/07 00:28
推 ronin728: (a < 0)? -a : a; 04/07 03:37
推 CaptainH: a*((a>0)*2-1) 04/07 04:32
推 TobyH4cker: 其實龜毛點上面都算是if-else跟if 04/07 08:08
→ TobyH4cker: 不過C大的方法讓我知道怎麼簡化了XD 04/07 08:11
→ EdisonX: -x = ~x + 1 ?? 04/07 08:28
→ TobyH4cker: Yes 04/07 08:31
→ EdisonX: 看錯了,忽略我的 @@ 04/07 08:31
推 CoNsTaR: 不就 num &= -num 就好了嗎? 04/08 02:36
→ CoNsTaR: 對 int 應該是 OK 的 04/08 02:37
推 CoNsTaR: 呃…應該是(int)((unsigned)num &= (unsigned)-num) 才 04/08 07:39
→ CoNsTaR: 對 04/08 07:39
→ TobyH4cker: -5 & 5 = 1 ? 04/08 09:32
→ jackalwei: 想到最簡單的做法就是,num*(1-2*符號)num為正,符號 04/08 10:06
→ jackalwei: 為0,就為num*1得解,反之*-1,負負得正,亦得解 04/08 10:06
→ jackalwei: 怎麼找出符號,只要用shift就可以達成了 04/08 10:07
推 newInLA: 沒說不能用switch呀,ㄎㄎ 04/11 07:14
→ newInLA: switch(num < 0) case true: return (num * -1); 04/11 07:15
推 cobrasgo: switch裡的嚴格講來算是if else 04/11 17:54