C++タイプ変換子の説明
2407 ワード
例:
出力:
d = 9
f1 = 9
f2 = -9.25596e+061
説明:
変数をintからdoubleに変換します.これらのタイプのバイナリ式は異なります.
reinterpret_castオペレータはオペランドタイプを変更したが,与えられたオブジェクトのビットモデルを再解釈しただけでバイナリ変換は行わなかった.計算後、f 2は不要な値を含む.これはreinterpret_castはnのビットビットをf 2にコピーするだけであり,必要な解析は行わない.
整数9を二重精度整数9に変換するにはstatic_castは、ビットビットビットを正確に二精度整数dに補完する必要がある.したがって、結果は9です.
- #include <iostream>
- using namespace std;
-
- int main()
- {
- int n = 9;
-
- long d = reinterpret_cast<long&> (n);
- double f1 = static_cast<double> (n);
- double f2 = reinterpret_cast<double&> (n);
-
- cout<<"d = "<<d<<endl;
- cout<<"f1 = "<<f1<<endl;
- cout<<"f2 = "<<f2<<endl;
-
- getchar();
- return 0;
- }
出力:
d = 9
f1 = 9
f2 = -9.25596e+061
説明:
変数をintからdoubleに変換します.これらのタイプのバイナリ式は異なります.
reinterpret_castオペレータはオペランドタイプを変更したが,与えられたオブジェクトのビットモデルを再解釈しただけでバイナリ変換は行わなかった.計算後、f 2は不要な値を含む.これはreinterpret_castはnのビットビットをf 2にコピーするだけであり,必要な解析は行わない.
整数9を二重精度整数9に変換するにはstatic_castは、ビットビットビットを正確に二精度整数dに補完する必要がある.したがって、結果は9です.