ABS(A)和abs(int)

Hex*_*ark 5 c macros xcode function objective-c

我对这两个在xcode,ABS(A)和abs(int)中的区别感到困惑.似乎也无法在网上找到任何解释.我应该使用哪个?我实际上在研究加速度计.使用ABS(A)和abs(int)给出了两个不同的值.使用abs(int)有时会产生一个inf值,而ABS(A)会给我一个不同的值,但从不给inf.谢谢!

http://www.switchonthecode.com/tutorials/iphone-tutorial-reading-the-accelerometer

Hab*_*bib 16

abs()适用于int,意思abs(-10.123)是返回10,ABS()而是一个宏,NSObjCRuntime.h从中返回一个值,其类型是参数的类型.

  • 哈啊.我知道了!谢谢!所以我说对了abs(int)总会返回一个整数吗? (2认同)

小智 6

NSObjCRuntime.h的ABS定义是:

#define ABS(a) ({typeof(a) _a = (a); _a < 0 ? -_a : _a; })
Run Code Online (Sandbox Code Playgroud)

所以它返回带有参数类型的值.另一方面,abs有原型

int abs (int number)
Run Code Online (Sandbox Code Playgroud)

所以它返回int类型的值.