几种强转
float a = 1.0f;
cout << (int)a << endl;
cout << (int&)a << endl; //把a在内存里的储存形式直接打印出来
int *b = (int*)(&a);//int指针强转 a址 赋给 b指针
cout<<*b<<endl;解除引用b指针
/////////////////////////////////////////////
一个普通的float到int的转化:
float a = 1.0f;
int b = (int)a; // BTW:(int)a是强制类型转化,而int(a)是根据float构造整型对象
cout << b; // 输出 1
/////////////////////////////////////////////////////////
这是将浮点类型转化为整型,浮点类型的存储转化为整型的存储 C语言中唯一的方法是 :
float a = 1.0f;
int b = *(int*)&a;
cout << hex << b << endl; // 输出 3F800000
*(int*)&a = 0x3F900000; // 看看int类型的3F900000作为浮点数是多少
cout << a << endl; // 输出 1.125
int的3F800000 和 float的1.0 在内存中的存储是一样的,int的3F900000 和 float的1.125 在内存中的存储是一样的。这个转化使用了一个技巧,强制转化的其实是指针。
///////////////////////////////////////////////
在C++中的方法:
float a = 1.0f;
int b = (int&)a;
cout << hex << b << endl; // 输出 3F800000
(int&)a = 0x3F900000;
cout << a << endl; // 输出 1.125
cout << (int)a << endl;
cout << (int&)a << endl; //把a在内存里的储存形式直接打印出来
int *b = (int*)(&a);//int指针强转 a址 赋给 b指针
cout<<*b<<endl;解除引用b指针
/////////////////////////////////////////////
一个普通的float到int的转化:
float a = 1.0f;
int b = (int)a; // BTW:(int)a是强制类型转化,而int(a)是根据float构造整型对象
cout << b; // 输出 1
/////////////////////////////////////////////////////////
这是将浮点类型转化为整型,浮点类型的存储转化为整型的存储 C语言中唯一的方法是 :
float a = 1.0f;
int b = *(int*)&a;
cout << hex << b << endl; // 输出 3F800000
*(int*)&a = 0x3F900000; // 看看int类型的3F900000作为浮点数是多少
cout << a << endl; // 输出 1.125
int的3F800000 和 float的1.0 在内存中的存储是一样的,int的3F900000 和 float的1.125 在内存中的存储是一样的。这个转化使用了一个技巧,强制转化的其实是指针。
///////////////////////////////////////////////
在C++中的方法:
float a = 1.0f;
int b = (int&)a;
cout << hex << b << endl; // 输出 3F800000
(int&)a = 0x3F900000;
cout << a << endl; // 输出 1.125


浙公网安备 33010602011771号