您的位置:首页 > 编程语言

在32位小端的机器上,如下代码输出是什么:

2016-07-18 20:11 399 查看
在32位小端的机器上,如下代码输出是什么:

char array[12] = {0x01 , 0x02 , 0x03 , 0x04 , 0x05 , 0x06 , 0x07 , 0x08};     
 short *pshort = (short *)array;     
 int *pint = (int *)array;     
 int64 *pint64 = (int64 *)array;     
 printf("0x%x , 0x%x , 0x%llx , 0x%llx", *pshort , *(pshort+2) , *pint64 , *(pint+2));



正确答案: B   你的答案: 空 (错误)

0x201 , 0x403 , 0x807060504030201 , 0x0


0x201 , 0x605 , 0x807060504030201 , 0x0


0x201 , 0x605 , 0x4030201 , 0x8070605


0x102 , 0x506 , 0x102030405060708 , 0x0


添加笔记

求解答(13)

收藏

纠错

小端机器的数据高位字节放在高地址,低位字节放在低地址。x86结构为小端模式。

pshort占用2个字节,在内存中的16进制为0x01 0x02,对应的16进制数为0x0201。

pshort + 2指向array数组的下标为4的元素,占用2个字节,在内存中的16进制为0x05 0x06,对应的16进制数为0x0605。 

pint64的int64类型不确定,但根据名字可以看出占用8个字节,对应的16进制形式为0x807060504030201。

pint  + 2占用4个字节,指向的array数组的下标为8的元素,8-11个元素没有指定数组的初始化值,默认为0,因此*(pint + 2)对应的16进制为0。

选B
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: