在计算整数或浮点值的绝对值时,与使用条件运算符相比,使用stdlib.h中的abs或math.h中的fab是否有任何优势?
#define ABS(x) (((x) >= 0)? (x): -(x))
解决方法
代码应该使用abs()使用int(或更窄),fabs()使用double,fabsf()使用float,labs(x)使用long等.
@Joachim Pileborg
>优势:非宏观.宏ABS()评估参数两次,可能不像在ABS(x)中那样. @EOF和@EOF
>优势:非宏观.序列点确定性. @EOF>优势:非宏观. -0.0使用OP的ABS()返回-0.0. fabs(-0.0)返回0.0.如果遵循IEC 60559浮点运算.>优势:非宏观. ABS(0.0 / 0.0)试图改变符号. (转角案件关注).>优势:非宏观. abs(),fabs()是标准函数,评论者很容易理解. ABS()不是.>性能:配置文件以查找平台上最佳的内容.什么是最好的(速度,代码大小,内存大小)因编译器而异.>没有用ABS()检查类型.>不能取宏的地址.