这个表达式的输出结果(C语言)

来源:百度知道 编辑:UC知道 时间:2024/06/21 22:53:17
unsigned int a=0X12345678;
printf(“%X\n”,*((unsigned char*)(&a)+1)+1);
输出结果是什么?
请给出详细的解答,谢谢!

这段程序应该只能在32位以上的编译器上才能有效执行,int型占4个字节,假设为FF1-FF4,编译器通常是高字节在前,即FF1-FF4存储的数据分别为0x78,0x56,0x34,0x12
&a取地址,即地址FF1,(unsigned char*)(&a)将这段地址转换为字符型地址,字符型占1个字节,因此((unsigned char*)(&a)+1)表示地址FF2,*(unsigned char*)((&a)+1)表示取该地址的数,即0x56,后面加1,取数后+1,即0x57,前面“%x”,以十六进制显示,即输出结果为57