Objective-Cタイプの鋳造
型キャストは、変数をあるデータ型から別のデータ型に変換する方法です。たとえば、long値を単純な整数に格納する場合は、cast long tointと入力できます。を使用して、値をあるタイプから別のタイプに明示的に変換できます。cast operator 次のように-
(type_name) expression
Objective-Cでは、通常、浮動小数点演算を行うためにCGFloatを使用します。これは、32ビットの場合は基本タイプのfloatから派生し、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 そして最後にそれはカウントで除算されてdouble値を生成します。
型変換は、コンパイラーによって自動的に実行される暗黙的なものにすることも、を使用して明示的に指定することもできます。 cast operator。型変換が必要な場合は常にキャスト演算子を使用することをお勧めします。
整数拡張
整数拡張は、整数型の値が「より小さい」よりも小さいプロセスです。 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になります。
通常の算術変換
ザ・ usual arithmetic conversions値を共通の型にキャストするために暗黙的に実行されます。コンパイラは最初に整数拡張を実行します。オペランドの型がまだ異なる場合は、次の階層で最も上位に表示される型に変換されます。
通常の算術変換は、代入演算子に対しても、論理演算子&&および||に対しても実行されません。概念を理解するために次の例を見てみましょう-
#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の結果を生成します。