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