PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
C_and_CPP
[問題] 不用if-else, for, while, do-while取絕
作者:
CaliforCat
(加州貓)
2016-04-06 23:33:15
對一個整數取絕對值
如果不用到if-else, for, while, do-while
可以使用什麼方法
我想到的都是會用到上列的限制...
請前輩指教 謝謝
作者:
Hazukashiine
(私は幸せです)
2016-04-06 23:35:00
#include<stdlib.h> int abs(int);
作者:
james732
(好人超)
2016-04-06 23:39:00
goto (?)
作者:
Hazukashiine
(私は幸せです)
2016-04-06 23:41:00
int pos = ((num < 0) ? (num * -1) : (num));
作者:
Frozenmouse
(ï¼Šå†°ä¹‹é¼ ï¼Š)
2016-04-06 23:48:00
補數?
作者:
Caesar08
(Caesar)
2016-04-06 23:50:00
能請問為甚麼不能用這些方法嗎?
作者:
Schottky
(順風相送)
2016-04-06 23:51:00
應該是跟人打賭吧,接受板眾插花嗎?
作者:
x000032001
(版廢了該走了)
2016-04-07 00:05:00
相乘再開根號就好啦 國中就有教了(被打
作者:
TobyH4cker
(Toby (我要當好人))
2016-04-07 00:23:00
num = num & (~(1<<(sizeof(int)*8-1)));這樣試試看?我剛想到的錯了 ˊˋnum = ((~num) & (~(1 << (sizeof(int)*8 - 1)))) + 1還是不對
作者:
ronin728
(浪人)
2016-04-07 03:37:00
(a < 0)? -a : a;
作者:
CaptainH
(Cannon)
2016-04-07 04:32:00
a*((a>0)*2-1)
作者:
TobyH4cker
(Toby (我要當好人))
2016-04-07 08:08:00
其實龜毛點上面都算是if-else跟if不過C大的方法讓我知道怎麼簡化了XD
作者:
EdisonX
(卡卡獸)
2016-04-07 08:28:00
-x = ~x + 1 ??
作者:
TobyH4cker
(Toby (我要當好人))
2016-04-07 08:31:00
Yes
作者:
EdisonX
(卡卡獸)
2016-04-07 08:31:00
看錯了,忽略我的 @@
作者:
kerwinhui
(kezza)
2016-04-07 12:17:00
https://www.strchr.com/optimized_abs_function
作者:
CoNsTaR
((const *))
2016-04-08 02:36:00
不就 num &= -num 就好了嗎?對 int 應該是 OK 的呃…應該是(int)((unsigned)num &= (unsigned)-num) 才對
作者:
TobyH4cker
(Toby (我要當好人))
2016-04-08 09:32:00
-5 & 5 = 1 ?
作者: 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:00
switch裡的嚴格講來算是if else
繼續閱讀
[問題] 如何寫出符合安全的C/C++ code
Clangpp
[問題] 費式數列
me356500
[問題] 用dirent.h讀檔名
shuian88
[問題] vs2010 編譯出的執行檔執行後會crash
ZhuBeiCity
[問題] dsp檔的語法
psylove5566
[問題] Win7 mingw COM program
ck49
Re: [問題] 只隔一行,printf出來結果不同
s22575872
Re: [問題]雙重 指標存取字串
weiclin
Re: [問題]雙重 指標存取字串
art1
[問題] 宣告動態全域變數
shuian88
Links
booklink
Contact Us: admin [ a t ] ucptt.com