各个类型的编码问题

qiuxi824039983 2012-04-30 08:52:00
#include<stdio.h>
void see(char *,int);
int main()
{
int j=12345;
double i=12345;
double *iptr=&i;
int *jptr=&j;
see((char *)&iptr,sizeof(double));
see((char *)&jptr,sizeof(int));
getchar();
return 0;
}

void see(char * ptr,int len)
{
int i;
for(i=0;i<len;i++)
printf("%.2x ",*(ptr+i));
printf("\n");
}

这个程序是以十六进制输出int和double型数据的编码,这是《深入理解计算机系统》中的例子,但在我的机子上输出很奇怪,double输出的是3c ffffffff 12 00 00 00 00 00,而int型输出的是44 ffffffff 12 00,很奇怪,不知道为什么,求各位大神解释一下,谢谢
...全文
44 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qiuxi824039983 2012-04-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
see((char *)&iptr,sizeof(double));
see((char *)&jptr,sizeof(int));

你把指针的地址传进去了.
[/Quote]
大意。。。。
evencoming 2012-04-30
  • 打赏
  • 举报
回复
改成你那样是输出i,j的指针的值二进制..
qq120848369 2012-04-30
  • 打赏
  • 举报
回复
see((char *)&iptr,sizeof(double));
see((char *)&jptr,sizeof(int));

你把指针的地址传进去了.
evencoming 2012-04-30
  • 打赏
  • 举报
回复

改成下面这样看看
int main()
{
int j=12345;
double i=12345;
double *iptr=&i;
int *jptr=&j;
see((char *)&i,sizeof(double));//changed
see((char *)&j,sizeof(int));//changed
getchar();
return 0;
}

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧