鉴于此代码示例:
CGFloat a = 1;
CGFloat b = 2;
CGFloat c = fabsf(a-b);
Run Code Online (Sandbox Code Playgroud)
当前的Xcode beta编译器给了我这个警告:
Absolute value function 'fabsf' given an argument of type 'double' but has parameter of type 'float' which may cause truncation of value
Run Code Online (Sandbox Code Playgroud)
为什么?
我看,代码使用普通float类型.当我寻找定义时CGFloat,我发现了这个:
#if defined(__LP64__) && __LP64__
# define CGFLOAT_TYPE double
# define CGFLOAT_IS_DOUBLE 1
# define CGFLOAT_MIN DBL_MIN
# define CGFLOAT_MAX DBL_MAX
#else
# define CGFLOAT_TYPE float
# define CGFLOAT_IS_DOUBLE 0
# define CGFLOAT_MIN FLT_MIN
# define CGFLOAT_MAX FLT_MAX
#endif
typedef CGFLOAT_TYPE CGFloat;
Run Code Online (Sandbox Code Playgroud)
所以CGFloat现在实际上是一个double,因此警告.
| 归档时间: |
|
| 查看次数: |
2742 次 |
| 最近记录: |