代码示例的输出
问题描述:
int main(){
int a = 330;
char *p;
p = (char *) &a;
printf("%d",*p);
return 0;
}
这是怎么回事74? Plz解释?代码示例的输出
答
如果整数为4个字节,有4层字符的在它。试着去了解这段代码的输出:
int main() {
int a =330, i;
char *p;
printf("%08x\n", a);
p=(char *)&a;
for (i = 0; i < sizeof(int); i++) {
printf("%02x ", p[i]);
}
printf("\n");
for (i = 0; i < sizeof(int); i++) {
printf("%02d ", p[i]);
}
printf("\n");
return 0;
}
打印:
0000014a
4a 01 00 00
74 01 00 00
+2
现在继续解释小端和大端;-))。 – 2014-10-08 06:50:15
答
在这里,您使用的是字符指针指向一个整型变量。 由于字符只是一个字节,你会得到74。 如果你用了一个整数指针,那么你就已经得到330
330 in binary is : 0000 0001 0100 1010
你在这里看到的值
74 : 0100 1010(1byte)
为什么你认为它不会是74?你了解代码吗?如果不是,你读过一本书或教程解释它?如果不是,为什么不呢? – nvoigt 2014-10-08 06:44:27
那你以为是什么时候呢? – 2014-10-08 06:45:28
[这个链接会给你答案的答案](http://www.c4learn.com/c-programming/pointer-arithmatics-pre-requisites/) – 2014-10-08 06:45:30