C++ での型変換
型キャストは基本的に、ある型から別の型への変換です。型変換には次の 2 種類があります。
- 暗黙的な型変換 「自動型変換」とも呼ばれます。
- ユーザーからの外部トリガーなしで、コンパイラーが独自に実行します。
- 通常、式内に複数のデータ型が存在する場合に発生します。このような状況では、データの損失を避けるために型変換 (型昇格) が行われます。
- 変数のすべてのデータ型は、最大のデータ型を持つ変数のデータ型にアップグレードされます。
bool ->char -> short int -> int -> unsigned int -> long -> unsigned -> long long -> float -> double -> long double
- 暗黙的な変換では情報が失われ、符号が失われる可能性があり (signed が暗黙的に unsigned に変換される場合)、オーバーフローが発生する可能性があります (long long が暗黙的に float に変換される場合)。
- 代入による変換: これは、括弧内の式の前に必要な型を明示的に定義することによって行われます。これも強引なキャスティングと言えるでしょう。
構文:
(type) expression
どこ タイプ 最終結果が変換されるデータ型を示します。
例:
// C++ program to demonstrate>// explicit type casting>>#include>using>namespace>std;>>int>main()>{>>double>x = 1.2;>>>// Explicit conversion from double to int>>int>sum = (>int>)x + 1;>>>cout < <>'Sum = '>< < sum;>>>return>0;>}>
出力:Sum = 2
- Cast 演算子を使用した変換: Cast オペレーターは、 単項演算子 これにより、あるデータ型が別のデータ型に強制的に変換されます。
C++ は 4 種類のキャストをサポートしています。- 静的キャスト
- ダイナミックキャスト
- 定数キャスト
- キャストの再解釈
例:
#include>using>namespace>std;>int>main()>{>>float>f = 3.5;>>>// using cast operator>>int>b =>static_cast><>int>>(f);>>>>cout < < b;>}>
出力:3
暗黙的な型変換の例:
// An example of implicit conversion> > #include> using> namespace> std;> > int> main()> {> > int> x = 10;> // integer x> > char> y => 'a'> ;> // character c> > > // y implicitly converted to int. ASCII> > // value of 'a' is 97> > x = x + y;> > > // x is implicitly converted to float> > float> z = x + 1.0;> > > cout < <> 'x = '> < < x < < endl> > < <> 'y = '> < < y < < endl> > < <> 'z = '> < < z < < endl;> > > return> 0;> }> |
出力:
x = 107 y = a z = 108明示的な型変換 : このプロセスは型キャストとも呼ばれ、ユーザー定義です。ここで、ユーザーは結果を型キャストして特定のデータ型にすることができます。
C++ では、次の 2 つの方法で実行できます。
型変換の利点:
- これは、型階層または型表現の特定の機能を利用するために行われます。
- さまざまなデータ型の変数を含む式を計算するのに役立ちます。