请问a的值为什么是1080?

来源:百度知道 编辑:UC知道 时间:2024/06/08 03:35:28
short a;
char *p;
a = 1234;
p= (char *)&a;
*p = 56;
printf("%d\n",a);

short a;
char *p;
a = 1234; //a= d2 04(16进制) 1234=0x4d2
p= (char *)&a;
*p = 56; //56= 38 (16进制)
printf("%d\n",a);// a= 38 04 (16进制)

1080=0x438

short 占2个字节,char 占1个字节;p=(char*)&a; 将short类型的a的地址强转换为char* 指针的时候,a存储空间中的值不会变化,p指针是char* ,所以会指向a的低8位;*p=56; 再赋值,实际上就改变了a的低8位的值。