Objective-c-type-casting

提供:Dev Guides
移動先:案内検索

Objective-Cタイプの鋳造

型キャストは、変数をあるデータ型から別のデータ型に変換する方法です。 たとえば、long値を単純な整数に格納する場合は、cast long to intと入力できます。 次のように*キャスト演算子*を使用して明示的に値を1つのタイプから別のタイプに変換できます-

(type_name) expression

Objective-Cでは、通常、浮動小数点演算にCGFloatを使用します。これは、32ビットの場合はフロートの基本型から、64ビットの場合はdoubleから派生します。 キャスト演算子が別の整数変数の除算を浮動小数点演算として実行する次の例を考えてください-

#import <Foundation/Foundation.h>

int main() {
   int sum = 17, count = 5;
   CGFloat mean;

   mean = (CGFloat) sum/count;
   NSLog(@"Value of mean : %f\n", mean );

   return 0;
}

上記のコードをコンパイルして実行すると、次の結果が生成されます-

2013-09-11 01:35:40.047 demo[20634] Value of mean : 3.400000

ここで、キャスト演算子は除算よりも優先されるため、 sum の値は最初に double 型に変換され、最後にcountで除算されてdouble値が生成されることに注意してください。

型変換は、コンパイラによって自動的に実行される暗黙的なものにすることも、* cast演算子*を使用して明示的に指定することもできます。 型変換が必要な場合は、キャスト演算子を使用することをお勧めします。

整数プロモーション

整数プロモーションは、整数型の値が int または unsigned int よりも小さい値が int または unsigned int に変換されるプロセスです。 intに文字を追加する例を考えてみましょう-

#import <Foundation/Foundation.h>

int main() {
   int  i = 17;
   char c = 'c'; /*ascii value is 99*/
   int sum;

   sum = i + c;
   NSLog(@"Value of sum : %d\n", sum );

   return 0;
}

上記のコードをコンパイルして実行すると、次の結果が生成されます-

2013-09-11 01:38:28.492 demo[980] Value of sum : 116

ここで、コンパイラは整数の昇格を行い、実際の加算操作を実行する前に 'c’の値をasciiに変換しているため、sumの値は116になります。

通常の算術変換

  • 通常の算術変換*は、それらの値を共通の型にキャストするために暗黙的に実行されます。 コンパイラは、最初に_integerプロモーション_を実行します。オペランドがまだ異なる型を持っている場合、それらは次の階層で最高に表示される型に変換されます-

通常の算術変換

通常の算術変換は、代入演算子に対しても、論理演算子&&および||に対しても実行されません。 私たちは概念を理解するために次の例を取りましょう-

#import <Foundation/Foundation.h>

int main() {
   int  i = 17;
   char c = 'c'; /*ascii value is 99*/
   CGFloat sum;

   sum = i + c;
   NSLog(@"Value of sum : %f\n", sum );
   return 0;
}

上記のコードをコンパイルして実行すると、次の結果が生成されます-

2013-09-11 01:41:39.192 demo[15351] Value of sum : 116.000000

ここで、最初のcは整数に変換されますが、最終値はfloatであるため、通常の算術変換が適用され、コンパイラーはiとcをfloatに変換し、それらを加算してfloat結果を生成することを理解するのは簡単です。