jon*_*ley 2 objective-c llvm ios
说我有一个功能:
- (void) doSomethingWithFloat:(float)aFloat;
Run Code Online (Sandbox Code Playgroud)
我用双精度浮点值调用该函数,如下所示:
[self doSomethingWithFloat:12.0];
Run Code Online (Sandbox Code Playgroud)
在编译时或运行时是否从12.0(双精度)到12.0f(单个)完成转换,或者两者都没有?
为了清楚起见:我不是要求单精度和双精度浮点数之间的区别.
ObjectiveC实际上遵循大多数C约定 - 因此当传递给函数时,浮点数被提升为C规范的两倍.ObjectiveC编译器最终将所有方法转换为函数,因此双重工作.
这表示最好打开编译器警告并传递CGFloats或浮点数 - 它只是让你知道你何时失去精度.
| 归档时间: |
|
| 查看次数: |
97 次 |
| 最近记录: |