绝对值计算

时间:2016-08-23 10:54:20

标签: c floating-point integer

在计算整数或浮点值的绝对值时,使用stdlib.h中的 abs 或math.h中的 fabs 是否有任何优势?使用条件运算符?

#define ABS(x) (((x) >= 0)? (x): -(x))

1 个答案:

答案 0 :(得分:6)

代码应使用abs() int(或更窄),fabs()使用双倍,fabsf()使用floatlabs(x)使用{{ 1}}等等@Joachim Pileborg

  1. 优势:非宏观。宏long对参数进行两次计算,可能不需要ABS()@EOF@EOF

  2. 优势:非宏观。序列点确定性。 @EOF

  3. 优势:非宏观。 ABS(x++)使用OP -0.0返回-0.0ABS()返回fabs(-0.0)。如果遵循IEC 60559浮点运算。

  4. 优势:非宏观。 0.0尝试更改标志。 (转角案件关注)。

  5. 优势:非宏观。 ABS(0.0/0.0)abs()是标准功能,审稿人很容易理解。 fabs()不是。

  6. 效果:个人资料,可在您的平台上查找最佳内容。什么是最佳(速度,代码大小,内存大小)因编译器而异。

  7. 不使用ABS()进行类型检查。

  8. 无法获取宏的地址。