自己动手给指针加 1,结果就看不懂*p 了
//代码在最下边在我这台机子加我这个编译器上,sizeof(3)的值是4,就是整型数据占4字节。
按我的理解,a[0]在内存中占32位,数值是1,就是前31位都是0,然后1个1;
a[1]在内存中占32位,前30位是0,后面跟2个1;
*p就是取a[0]的后24位加a[1]的前8位,结果是100000000b,就是256,怎么显示就成了33554432了呢?
求大神解答,一定是我有什么地方搞错了。
程序代码:#include <stdio.h>
#include <stdlib.h>
int main(){
int a[3] = {1, 2, 3};
int *p = a;
p = 2686721; //因为之前用printf显示出p的值是2868720,所以这里给他加上1
printf("%d", *p); //程序运行到这里显示结果33554432,是1后面跟25个0的二进制数
return 0;
}







