标签: c floating-point integer
在计算整数或浮点值的绝对值时,使用stdlib.h中的 abs 或math.h中的 fabs 是否有任何优势?使用条件运算符?
#define ABS(x) (((x) >= 0)? (x): -(x))
答案 0 :(得分:6)
代码应使用abs() int(或更窄),fabs()使用双倍,fabsf()使用float,labs(x)使用{{ 1}}等等@Joachim Pileborg
abs()
int
fabs()
fabsf()
float
labs(x)
优势:非宏观。宏long对参数进行两次计算,可能不需要ABS()。 @EOF和@EOF
long
ABS()
优势:非宏观。序列点确定性。 @EOF
优势:非宏观。 ABS(x++)使用OP -0.0返回-0.0。 ABS()返回fabs(-0.0)。如果遵循IEC 60559浮点运算。
ABS(x++)
-0.0
fabs(-0.0)
优势:非宏观。 0.0尝试更改标志。 (转角案件关注)。
0.0
优势:非宏观。 ABS(0.0/0.0),abs()是标准功能,审稿人很容易理解。 fabs()不是。
ABS(0.0/0.0)
效果:个人资料,可在您的平台上查找最佳内容。什么是最佳(速度,代码大小,内存大小)因编译器而异。
不使用ABS()进行类型检查。
无法获取宏的地址。