Cprogramming-c-type-casting
C-タイプ鋳造
あるデータ型を別のデータ型に変換することは、型キャストまたは型変換と呼ばれます。 たとえば、「long」値を単純な整数に格納する場合は、「long」を「int」にキャストできます。 次のように*キャスト演算子*を使用して明示的に値を1つのタイプから別のタイプに変換できます-
(type_name) expression
キャスト演算子が別の整数変数の除算を浮動小数点演算として実行する次の例を考えてください-
#include <stdio.h>
main() {
int sum = 17, count = 5;
double mean;
mean = (double) sum/count;
printf("Value of mean : %f\n", mean );
}
上記のコードをコンパイルして実行すると、次の結果が生成されます-
Value of mean : 3.400000
ここで、キャスト演算子は除算よりも優先されるため、 sum の値は最初に double 型に変換され、最後にcountで除算されてdouble値が生成されることに注意してください。
型変換は、コンパイラーによって自動的に実行される暗黙的なものにすることも、* cast演算子*を使用して明示的に指定することもできます。 型変換が必要な場合は、キャスト演算子を使用することをお勧めします。
整数プロモーション
整数プロモーションは、整数型の値が int または unsigned int よりも小さい値が int または unsigned int に変換されるプロセスです。 整数で文字を追加する例を考えてみましょう-
#include <stdio.h>
main() {
int i = 17;
char c = 'c';/*ascii value is 99*/
int sum;
sum = i + c;
printf("Value of sum : %d\n", sum );
}
上記のコードをコンパイルして実行すると、次の結果が生成されます-
Value of sum : 116
ここで、コンパイラは整数の昇格を行い、実際の加算操作を実行する前に 'c’の値をASCIIに変換しているため、sumの値は116です。
通常の算術変換
- 通常の算術変換*は、それらの値を共通の型にキャストするために暗黙的に実行されます。 コンパイラーは最初に_整数プロモーション_を実行します。オペランドがまだ異なる型を持っている場合、それらは次の階層で最高に表示される型に変換されます-
通常の算術変換は、代入演算子に対しても、論理演算子&&および||に対しても実行されません。 私たちは概念を理解するために次の例を取り上げましょう-
#include <stdio.h>
main() {
int i = 17;
char c = 'c';/*ascii value is 99*/
float sum;
sum = i + c;
printf("Value of sum : %f\n", sum );
}
上記のコードをコンパイルして実行すると、次の結果が生成されます-
Value of sum : 116.000000
ここでは、最初のcが整数に変換されることを理解するのは簡単ですが、最終値がdoubleであるため、通常の算術変換が適用され、コンパイラーはiとcを 'float’に変換し、それらを加算して 'float’結果を生成します。