推奨されます, 2024

エディターズチョイス

型キャストと型変換の違い

2つの用語「型キャスト」と「型変換」は、あるデータ型を別のデータ型に変換する必要があるときに発生します。 2つの型が互いに互換性がある場合は、一方の型から他方の型への変換はコンパイラによって自動的に行われます。 ただし、型変換と型キャストの間には基本的な違いがあります。つまり、型変換はコンパイラによって「自動的に」行われますが、型キャストはプログラマによって「明示的に」行われます。 比較表を使って、型キャストと変換の違いを説明しましょう。

比較表:

比較基準タイプキャスティング型変換
意味あるデータ型は、キャスト演算子を使用してユーザーによって別のデータ型に割り当てられ、「型キャスト」と呼ばれます。コンパイラによるあるデータ型の別のデータ型への変換は、「型変換」と呼ばれます。
適用済み型キャストは、2つの「互換性のない」データ型にも適用できます。型変換は、2つのデータ型が「互換」の場合にのみ実装できます。
オペレーターデータ型を別のデータ型にキャストするには、キャスト演算子 '()'が必要です。オペレータは必要ありません。
データ型のサイズ宛先タイプはソースタイプより小さくてもかまいません。ここでは、宛先タイプはソースタイプより大きくなければなりません。
実装済みプログラム設計中に行われます。コンパイル中に明示的に行われます。
変換タイプ
狭い変換拡大変換
int a;
バイトb。
...
...
b =(バイト)a。
int a = 3;
フロートb。
b = a; // bの値= 3.000

型キャストの定義

型キャストは、プログラム設計時にプログラマが1つのデータ型を別のデータ型にキャストすることとして定義できます。 あるデータ型から別のデータ型への自動変換は、常に可能というわけではありません。 'destination type'が 'source type'よりも小さいことが条件である可能性があるため、プログラマはキャスト演算子 '()'を使用して大きいデータ型を小さいデータ型に明示的にキャストする必要があります。 大きい方のデータ型が小さい方のデータ型に変調されるため、「ナローイング変換」とも呼ばれます。

宣言:

 destination_type =(target_type)変数/値//ターゲットタイプは、ソースタイプを変換するタイプで、常に宛先タイプです。 

例でそれを理解しましょう。 データ型 'int'を 'byte'に変換したいのですが、 'byte'は 'int'より小さいので、型変換はできません。 ここでは、キャスト演算子 '()'を使用して、暗黙的に 'int'を 'byte'に変換する必要がありました。 'int'は 'byte'より大きいため、 'int'のサイズは「int mod byte」の範囲に縮小されます。

 int a; バイトb。 ... ... b =(バイト)a; 

'float'が 'int'に変換されると、 'int'は小数値を格納しないため、floatのサイズは切り捨てられます。 デスティネーションタイプのサイズがソースタイプが収まるには小さすぎる場合、ソースタイプはモジュロデスティネーションタイプ 'range'です。 データ型に互換性がある場合にもキャストを適用できます。型変換が必要な場合は常に型キャストを使用することをお勧めします。

型変換の定義

型変換は、必要に応じてあるデータ型から別のデータ型への自動変換であり、コンパイラによって明示的に行われます。 しかし、型変換の前に満たすべき2つの条件があります。

  • 転送元と転送先のタイプは互換性がある必要があります。
  • 宛先タイプはソースタイプより大きくなければなりません。

これら2つの条件は型変換を達成するために満たすべきであり、この種の変換は「拡大変換」と呼ばれます。小さい型がより大きい型に変換されると、型の拡大が発生します。 この拡大変換では、 'int'、 'float'などの数値型は互いに互換性がありますが、numericからcharとbooleanまたはcharとbooleanの間の互換性もありません。

この例はこれのよりよい見方を提供します

 int a = 3; フロートb。 b = a; // bの値= 3.000 

ここで、 'int'は 'int'より大きい 'float'に変換されるので、ソースタイプの拡大が発生します。 ここでは、コンパイラが明示的に行うので、キャスト演算子は必要ありません。

型キャストと変換の主な違い

  1. 型変換と型変換を区別する基本的な違いは、型キャストがプログラマによって行われる、ある型から別の型への変換であるということです。 一方、型変換は、コンパイル中にコンパイラによって行われる、ある型から別の型への変換です。
  2. 型キャストは互いに互換性がない可能性があるデータ型には適用できますが、型変換は互いに互換性があるデータ型にしか適用できません。
  3. 型キャストである型を別の型に変換するにはキャスト演算子“()”が必要ですが、型変換であるデータ型を別のデータ型に変換するには演算子が不要です。
  4. 型キャストで1つのデータ型を別のデータ型に変換している間、宛先型はソース型より大きくても小さくてもかまいません。 一方、型変換では、変換先の型は変換元の型より大きくなければなりません。
  5. ある型から別の型への変換は型キャストでコーディングしながら行われますが、型変換では、ある型から別の型への変換はコンパイル中に明示的に行われます。
  6. 型キャストは、ここでは変換先の型が変換元の型よりも小さくなることがあるため、ナロー変換と呼ばれます。一方、変換型は変換のために変換型と呼ばれます。

結論:

型変換と型変換はどちらもあるデータ型を別のデータ型に変換するというタスクを実行しますが、型変換はプログラマによって行われ、型変換はキャスト演算子 '()'を使って行われますコンパイラ、そしてそれは任意の演算子を使用していません。

Top