各个类型的编码有关问题
各个类型的编码问题C/C++ code#includestdio.hvoid see(char *,int)int main(){int j12345double i1
各个类型的编码问题
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的指针的值二进制..