工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> C言語

C での型キャスト:型変換、暗黙的、例による明示的

C の型キャストとは

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

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

<オール>
  • 暗黙の型キャスト
  • 明示的な型キャスト
  • 暗黙の型キャスト

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

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

    #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
    

    <オール>
  • この例では、値が 10 として初期化された short データ型の変数を宣言しています。
  • 2 行目では、int データ型の変数を宣言しています。
  • 3 行目では、変数 s の値を変数 a に代入しています。 3 行目では、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

    ここで、コンパイラは、実際の加算操作を実行する前に、'k' の値を ASCII に変換することにより、整数昇格を行いました。

    算術変換階層

    コンパイラは、最初に文字を整数に昇格させます。オペランドのデータ型が異なる場合は、次の階層図に示されている最上位のデータ型に変換されます:

    <センター>

    <図>

    算術変換階層

    概念を理解するには、次の例を検討してください:

    #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" の結果を生成します。

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

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

    <オール>
  • float を int に変換すると、小数部分が切り捨てられるため、値の意味が失われます。
  • double を float に変換すると、桁が切り上げられます。
  • long int を int に変換すると、余分な上位ビットが削除されます。
  • 上記のすべてのケースで、データ型を変換すると、値の意味が失われます。通常、値の意味が失われると、コンパイラによって警告されます。

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

    明示的な型キャスト

    暗黙的な型変換では、データ型は自動的に変換されます。型変換を強制しなければならないシナリオがいくつかあります。 int データ型として宣言された 2 つのオペランドの除算を格納する変数 div があるとします。

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

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

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

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

    (type-name) expression
    

    ここで、

    明示的な型キャストを使用して 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
    

    <オール>
  • float 型の変数「a」を初期化しました。
  • 次に、整数データ型の別の変数「b」があります。変数「a」と「b」はデータ型が異なるため、「C」ではそのような式を使用できず、エラーが発生します。 「C」の一部のバージョンでは、式は評価されますが、結果は望ましくありません。
  • このような状況を避けるために、float 型の変数「a」を型キャストしました。明示的な型キャスト メソッドを使用することで、float をデータ型 integer に正常に変換できました。
  • 'a' の値を出力しましたが、これはまだ float です
  • 型キャストの後、結果は常に整数の「b」になります。
  • このようにして、C プログラミングで明示的な型キャストを実装できます。

    まとめ

    データの損失を防ぐために、異なるデータ型を扱うときは、次のプログラミング ルールに留意してください。


    C言語

    1. C# 型変換
    2. C++ 型変換
    3. Python の型変換と型キャスト
    4. Java の型キャスト
    5. データをどうすればいいですか?!
    6. C++ Switch Case ステートメントと EXAMPLE
    7. C++ Char データ型と例
    8. C++ 構造体と例
    9. C++ の std::list と例
    10. C# - データ型
    11. C# - 型変換