C - タイプキャスト
あるデータ型を別のデータ型に変換することは、型キャストまたは型変換と呼ばれます。たとえば、'long' 値を単純な整数に格納する場合は、'long' を 'int' にキャストすることができます。 キャスト演算子を使用して、値をある型から別の型に明示的に変換できます 次のように-
(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 型に変換されます そして最後に、カウントで除算され、double 値が得られます。
型変換は、コンパイラによって自動的に実行される暗黙的なものにすることも、キャスト演算子を使用して明示的に指定することもできます .型変換が必要な場合はいつでもキャスト演算子を使用することは、良いプログラミング方法と考えられています.
整数昇格
整数昇格は、整数型の値が 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
ここで、sum の値は 116 です。これは、実際の加算操作を実行する前に、コンパイラが整数の昇格を行い、'c' の値を ASCII に変換しているためです。
通常の算術変換
通常の算術変換 それらの値を共通の型にキャストするために暗黙的に実行されます。コンパイラは最初に 整数昇格 を実行します;オペランドにまだ異なる型がある場合、それらは次の階層で最上位に表示される型に変換されます −
通常の算術変換は、代入演算子に対しても、論理演算子 &&および || に対しても実行されません。概念を理解するために次の例を見てみましょう-
ライブデモ#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' の結果を生成します。
C言語