C での型キャスト: 型変換、暗黙的、明示的 (例付き)

C の型キャストとは何ですか?

型キャストとは、あるデータ型を別のデータ型に変換することです。 C言語ではデータ変換や型変換とも呼ばれます。 これは、「C」プログラミングで導入された重要な概念の XNUMX つです。

「C」プログラミングでは、次の XNUMX 種類の型キャスト操作が提供されます。

  1. 暗黙的な型キャスト
  2. 明示的な型キャスト

暗黙的な型キャスト

暗黙的な型キャストとは、元の意味を失わずにデータ型を変換することを意味します。 このタイプの型キャストは、データ型を変更する場合に不可欠です。 無し 内部に格納されている値の重要性を変更する 変数.

C では、値が互換性のあるデータ型にコピーされるときに、暗黙的な型変換が自動的に行われます。 変換中は、型変換の厳密なルールが適用されます。 オペランドが XNUMX つの異なるデータ型である場合、低いデータ型を持つオペランドは自動的に高いデータ型に変換されます。 このタイプの型変換は以下で見ることができます。wing 例。

#include<stdio.h>
int main(){
	short a=10; //initializing variable of short data type
	int b; //declaring int variable
	b=a; //implicit type casting
	printf("%d\n",a);
	printf("%d\n",b);
}

出力:

10
10

暗黙的な型キャスト

  1. 指定された例では、値が 10 に初期化された short データ型の変数を宣言しました。
  2. XNUMX 行目では、int データ型の変数を宣言しています。
  3. XNUMX 行目では、変数 s の値を変数 a に代入しています。 XNUMX 行目では、short データ型の変数 s の値が int データ型の変数 a にコピーされるため、暗黙的な型変換が実行されます。

文字を Int に変換する

ASCII でデコードされた文字を整数で追加する例を考えてみましょう。

#include <stdio.h>
main() {
   int  number = 1;
   char character = 'k'; /*ASCII value is 107 */
   int sum;
   sum = number + character;
   printf("Value of sum : %d\n", sum );
}

出力:

 Value of sum : 108

ここで、コンパイラは整数を実行しました promoこれは、実際の加算演算を実行する前に、「k」の値を ASCII に変換することによって行われます。

算術変換階層

コンパイラはまず次の処理を実行します。 promo文字を整数に変換します。オペランドのデータ型がまだ異なる場合は、以下に示す最も高いデータ型に変換されます。wing 階層図:

暗黙的な型キャスト
算術変換階層

以下を検討してくださいwing 概念を理解するための例:

#include <stdio.h>
main() {
   int  num = 13;
   char c = 'k'; /* ASCII value is 107 */
   float sum;
   sum = num + c;
   printf("sum = %f\n", sum );}

出力:

 sum = 120.000000

まず、c 変数は整数に変換されますが、コンパイラは NUM > c を「float」に変換し、それらを追加して「float」結果を生成します。

暗黙的な変換に関する重要なポイント

  • 型変換の暗黙的な型は、標準型変換とも呼ばれます。 暗黙的な型キャストではキーワードや特別なステートメントは必要ありません。
  • 小さいデータ型から大きいデータ型への変換は、次のように呼ばれます。 type promo生産。上の例では、s の値は次のようにも言えます。 promo整数を入力する必要があります。
  • 暗黙的な型変換は、常に互換性のあるデータ型で行われます。

次のような相互に互換性のないデータ型に対して暗黙的な型キャストを実行することはできません。

  1. float を int に変換すると、小数部分が切り捨てられるため、値の意味が失われます。
  2. 加工 double float にすると桁が切り上げられます。
  3. long int を int に変換すると、余分な上位ビットが削除されます。

上記のすべてのケースで、データ型を変換すると、値の意味が失われます。 一般に、値の意味が失われるとコンパイラによって警告されます。

「C」プログラミング は、明示的な型キャストという別の型キャスト方法を提供します。

明示的な型キャスト

暗黙的な型変換では、データ型が自動的に変換されます。 シナリオによっては、型変換を強制する必要がある場合があります。 int データ型として宣言された XNUMX つのオペランドの除算を格納する変数 div があるとします。

 int result, var1=10, var2=3;
result=var1/var2;

この場合、変数 var1 と var2 で除算が実行された後、変数「result」に格納される結果は整数形式になります。 この場合、変数「result」に格納されている値は、通常は XNUMX つの数値の除算で求められる小数部分が考慮されていないため、意味が失われます。

このような状況で型変換を強制するには、明示的な型キャストを使用します。

型キャスト演算子が必要です。 型キャスト操作の一般的な構文は次のとおりです。

(type-name) expression

ここでは、

  • 型名は、標準の「C」言語データ型です。
  • 式には、定数、変数、または実際の式を指定できます。

明示的な型キャストを使用して C で型キャストする方法を示すプログラムを作成してみましょう。

#include<stdio.h>
int main()
{
	float a = 1.2;
	//int b  = a; //Compiler will throw an error for this
	int b = (int)a + 1;
	printf("Value of a is %f\n", a);
	printf("Value of b is %d\n",b);
	return 0;
}

出力:

Value of a is 1.200000
Value of b is 2

明示的な型キャスト

  1. float 型の変数 'a' を初期化しました。
  2. 次に、整数データ型の別の変数 'b' があります。 変数 'a' と 'b' は異なるデータ型であるため、'C' ではそのような式の使用が許可されず、エラーが発生します。 「C」の一部のバージョンでは、式は評価されますが、結果は望ましくないものになります。
  3. このような状況を回避するために、float 型の変数 'a' を型キャストしました。 明示的な型キャストメソッドを使用することで、float を integer データ型に変換することに成功しました。
  4. 'a' の値を出力しましたが、これはまだ浮動小数点です。
  5. 型キャスト後の結果は常に整数「b」になります。

このようにして、C プログラミングで明示的な型キャストを実装できます。

まとめ

  • 型キャストは型変換とも呼ばれます
  • これは、あるデータ型を別のデータ型に変換することを意味します。
  • より小さいデータ型をより大きいデータ型に変換することも、型と呼ばれます。 promoる。
  • 型変換には、C における暗黙的型変換と明示的型変換の XNUMX 種類があります。
  • 互換性のあるデータ型が見つかると、暗黙的な型変換が自動的に実行されます。
  • 明示的な型変換には型キャスト演算子が必要です。

次のことを覚えておいてくださいwing データ損失を防ぐために、異なるデータ型を扱う場合のプログラミング実践のルール:

  • 整数型は浮動小数点型に変換する必要があります。
  • float 型は次のように変換する必要があります。 double.
  • 文字型は整数に変換する必要があります。