2

関数があるとします:

- (void) doSomethingWithFloat:(float)aFloat;

次のように、倍精度浮動小数点値を使用してその関数を呼び出します。

[self doSomethingWithFloat:12.0];

12.0 (double) から 12.0f (single) への変換は、コンパイル時または実行時に行われますか?

わかりやすくするために、単精度と倍精度の浮動小数点数の違いを求めているわけではありません。

4

1 に答える 1

5

ObjectiveC は実際にはほとんどの C 規則に従います。そのため、float は関数に渡されるときに C 仕様に従って double に昇格されます。ObjectiveC コンパイラは最終的にすべてのメソッドを関数に変換するため、double は機能します。

とはいえ、コンパイラの警告を有効にして CGFloats または float を渡すのが最善の方法です。これは、精度が失われていることを知らせるだけです。

于 2012-07-16T23:45:50.037 に答える