读书人

各个类型的编码有关问题

发布时间: 2012-05-01 12:48:58 作者: rapoo

各个类型的编码问题

C/C++ code
#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,很奇怪,不知道为什么,求各位大神解释一下,谢谢

[解决办法]

改成下面这样看看
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;
}

[解决办法]
see((char *)&iptr,sizeof(double));
see((char *)&jptr,sizeof(int));

你把指针的地址传进去了.
[解决办法]
改成你那样是输出i,j的指针的值二进制..

读书人网 >C语言

热点推荐