猿问

C/C+中是否有标准符号函数(Signum,SGN)?

C/C+中是否有标准符号函数(Signum,SGN)?

我想要一个函数返回-1表示负数,+1表示正数。http://en.wikipedia.org/wiki/Sign_function写自己的东西很容易,但似乎应该在某个标准库中。

编辑:具体来说,我在寻找一个在浮动上工作的函数。


青春有我
浏览 4899回答 3
3回答

湖上湖

我不知道它的标准功能。不过,这里有一种有趣的方式来编写它:(x&nbsp;>&nbsp;0)&nbsp;-&nbsp;(x&nbsp;<&nbsp;0)下面是一种更易读的方法:if&nbsp;(x&nbsp;>&nbsp;0)&nbsp;return&nbsp;1;if&nbsp;(x&nbsp;<&nbsp;0)&nbsp;return&nbsp;-1;return&nbsp;0;如果您喜欢三元操作符,可以这样做:(x&nbsp;>&nbsp;0)&nbsp;?&nbsp;1&nbsp;:&nbsp;((x&nbsp;<&nbsp;0)&nbsp;?&nbsp;-1&nbsp;:&nbsp;0)

明月笑刀无情

有一个C99数学库函数,名为写号(),它从一个参数中获取符号,从另一个参数获取绝对值:result&nbsp;=&nbsp;copysign(1.0,&nbsp;value)&nbsp;//&nbsp;double result&nbsp;=&nbsp;copysignf(1.0,&nbsp;value)&nbsp;//&nbsp;float result&nbsp;=&nbsp;copysignl(1.0,&nbsp;value)&nbsp;//&nbsp;long&nbsp;double将根据值的符号给出+/-1.0的结果。注意,浮点零有符号:(+0)将产生+1,(-0)将产生-1。
随时随地看视频慕课网APP
我要回答