int から float への変換をアップキャストと見なし、float から int へのダウンキャストと見なすことはできますか? アップキャストとダウンキャストについて話すとき、特に参照変換を意味していると思います。
4 に答える
いいえ、値型間の変換は、アップキャストまたはダウンキャストと見なすことはできません。これらは階層リンクを共有していないためです (どのような方法または形式でも相互に継承されません)。
アップキャストとは、具体的には、サブタイプ参照をスーパー タイプ参照に変更することを意味します。
ダウンキャストはその逆です。
いいえ、アップキャストとダウンキャストは継承のコンテキストでのみ有効です。多かれ少なかれデータを保持できる値型の間で変換する場合は、単純な型変換を使用しています。そのうち、2 つの異なるタイプがあります。 1. 暗黙の変換。これらは、変換が「安全」である、つまりデータが失われないため、実行できる変換です。たとえば、int
値を値に安全に変換できlong
ます。2. 明示的な変換。これらは、データが失われる可能性がある変換であるため、変換を行うには明示的なキャストを行う必要があります。たとえば、long
値をに変換することint
は安全ではありません。
インポートの詳細については、http: //msdn.microsoft.com/en-us/library/ms173105.aspxを参照してください。
いいえ、float は int の特殊なケース (IE サブクラス) ではありません。それらは異なるタイプです。
他の人が説明したように、これらはアップキャストとダウンキャストの例ではありません。ただし、プリミティブ型の変換の拡大と縮小について話すことはできます (たとえば、int から long への変換は拡大変換であるため、暗黙的に行うことができます)。違う。
int から float への暗黙的な変換がありますが、float では整数を正確に表すことができないため、変換によって実際には精度が失われる可能性があります。これは、暗黙の変換で情報が失われないという一般的なルールを曲げているため、知っておく価値があります。これは、整数を浮動小数点数に変換し、それらを使用して一連の累積計算を行ってから、整数に変換し直した場合にのみ顕著になります。このような場合、浮動小数点数が 10 進数の完全な表現であると仮定すると、近似誤差が蓄積され、誤った結果が生成される可能性があります。