引用 14 楼 Neversaydie_D 的回复:int i ; *(float*)&i = 1.0; cout<<i; 请大牛解释一下 cout<<i 出现的数值的原因 因为 float 的 1.0 的编码是 3f 80 00 00,这个编码按 int 解读就是你看到的那个数
楼主应该給17楼分。
引用 25 楼 Neversaydie_D 的回复:我这样理解对不对: float 在内存的储存是 1个符号位8个阶码位 23个尾数位 1.0 的二进制的表示 是 0000 0001 可表示为 1.0*2^0, 阶码为127+0 = 127;127的二进制是0111 1111 尾数部分是23个0; 1.0在内存中的储存是: 0011 1111 1000 0000……
我这样理解对不对: float 在内存的储存是 1个符号位8个阶码位 23个尾数位 1.0 的二进制的表示 是 0000 0001 可表示为 1.0*2^0, 阶码为127+0 = 127;127的二进制是0111 1111 尾数部分是23个0; 1.0在内存中的储存是: 0011 1111 1000 0000 0000 0000 0000 0000 再换成16进制则是: 3f 80 00 00
int i; int *pi = &i float* temp = (float*)pi; *temp = 1.0; int b = i; //i被解释为一个整数,但它实际上保存的是一个浮点数
最好贴出来上下文的代码
引用 1 楼 xiedonghao 的回复:对i进行取址,得到一个(int型)指针,再把这个指针强制转换为float型指针。 再取这个float指针所指的对象
引用 1 楼 xiedonghao 的回复:对i进行取址,得到一个(int型)指针,再把这个指针强制转换为float型指针。 这段代码是有错误的,不知道是在哪里,你能帮我指出来吗
为什么1.0是double类型的常量
对i进行取址,得到一个(int型)指针,再把这个指针强制转换为float型指针。
C/C++ code?123456789101112131415//企图重新解释变量 int i; *(float*)&i=1.0;//通过非声明的类型访问1.0是double类型的常量&i //取int变量i的地址(float*)&i //将这个地址强制类型转换为指向float类型的指针*(float*)&i=1.0; //给这个指针所……
64,636
社区成员
250,963
社区内容
加载中
试试用AI创作助手写篇文章吧