LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 831|回复: 5

指针--地址的疑惑

[复制链接]
发表于 2003-8-7 12:03:51 | 显示全部楼层 |阅读模式
程序代码如下:

#include<iostream.h>
void main()
{
   int *p;
   double q;
   q=1234.56;
   p=(int*) &q;
   cout<<*p<<q<<p<<&q<<endl;
}

输出的结果很奇怪,地址输出是一样的,但是里面的数据却不一样(*p,q不相同),难道说是强制转换的时候出了问题?
发表于 2003-8-7 12:16:54 | 显示全部楼层
浮点保存方式与定点保存方式不一样
也就是说各位意义不一样
发表于 2003-8-7 12:33:45 | 显示全部楼层

回复: 指针--地址的疑惑

最初由 farmer 发表
程序代码如下:

#include<iostream.h>
void main()
{
   int *p;
   double q;
   q=1234.56;
   p=*(int*) &q;

   这一行不对吧?
   
   cout<<*p<<q<<p<<&q<<endl;
}

输出的结果很奇怪,地址输出是一样的,但是里面的数据却不一样(*p,q不相同),难道说是强制转换的时候出了问题?
 楼主| 发表于 2003-8-7 13:15:12 | 显示全部楼层
不好意思,粗心了,多打了个*
 楼主| 发表于 2003-8-7 13:16:10 | 显示全部楼层
最初由 无双 发表
浮点保存方式与定点保存方式不一样
也就是说各位意义不一样

班竹能说的详细一点吗?谢谢
发表于 2003-8-7 16:09:14 | 显示全部楼层

re:

sizeof(double)=8;
sizeof(int)=4;
将double *强制转成int *以后,读出来的只是前面4个字节的数据,而double数据类型在内存中的组织形式跟int是不一样的,不过具体是怎么样的我不清楚.
所以读出来的数差别会有这么大.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表