C++编程中有一题不知道怎么算的……

来源:百度知道 编辑:UC知道 时间:2024/05/29 10:44:12
#include<iostream>
using namespace std;
int main(){
float f = 34.5;
int* ip = reinterpret_cast<int*>(&f);
cout<<"float address: "<<&f<<"=>"<<f<<endl;
cout<<" int address: "<<ip<<"=>"<<*ip<<endl;
*ip = 100;
cout<<" int: "<<*ip<<endl;
cout<<"float: "<<f<<endl;

结果:float address:0013ff7c=>34.5
int address:0013ff7c=>
int :100
float:

请问这里1107951616与1.4013e-043是怎么算的啊?

对于浮点数的地址,按整形解释就会出现这种结果了...
要说怎么算的,那就要涉及到数据是怎么保存的了,比如浮点数是IEEE754标准,那么你先把这个数按IEEE754标准写成2进制,然后把这个2进制数按int解释下,看看是多少....

这个程序想表达的是“同样的二进制数据看作不同的类型的时候,意义会不一样”

float类型的34.5的二进制数据(0x420A0000)看成int类型的话就是1107951616

int的100(0x00000064)看成float就是1.4013e-043 (不过其实这个不对,0x00000064作为float类型是个异常数据)