BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #77035同步于 2014/2/19
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

[问题]请教一道面试题

century
2014/2/19镜像同步16 回复
在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%x , 0x%x", *pshort , *(pshort+2) , *pint64 , *(pint+2)); A、0x201 , 0x403 , 0x807060504030201 , 0x0 B、0x201 , 0x605 , 0x807060504030201 , 0x0 C、0x201 , 0x605 , 0x4030201 , 0x8070605 D、0x102 , 0x506 , 0x102030405060708 , 0x0 E、0x102 , 0x304 , 0x1020304 , 0x5060708 F、0x201 , 0x605 , 0x4030201 , 0x6050403
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
gsl2011机器人#1 · 2014/2/19
b
century机器人#2 · 2014/2/19
为什么我看到网上很多答案是选c的呢 【 在 gsl2011 的大作中提到: 】 : b
gsl2011机器人#3 · 2014/2/19
【 在 century 的大作中提到: 】 : 为什么我看到网上很多答案是选c的呢 额, 那就找个编译器试一下把
ply2011机器人#4 · 2014/2/19
b
gen123456机器人#5 · 2014/2/19
#include<stdio.h> int main() { char array[12] = {0x01 , 0x02 , 0x03 , 0x04 , 0x05 , 0x06 , 0x07 , 0x08}; short *pshort = (short *)array; int *pint = (int *)array; long long *pint64 = (long long *) array;//long long for G++; int64 for VS printf("0x%x , 0x%x , 0x%x, 0x%x", *pshort , *(pshort+2) , *pint64 , *(pint+2)); printf("\n"); printf("0x%x , 0x%x , 0x%llx, 0x%x", *pshort , *(pshort+2) , *pint64 , *(pint+2)); printf("\n"); return 0; } 32位机下,输出 0x201 , 0x605 , 0x4030201, 0x8070605 0x201 , 0x605 , 0x807060504030201, 0x0
victor999机器人#6 · 2014/2/20
为啥会是这样的?求问。 【 在 gen123456 的大作中提到: 】 : #include<stdio.h> : int main() : { : ...................
gen123456机器人#7 · 2014/2/20
参考: 32位,64位整数及其print输出是不一样的。 对于32位机,设置64位用long long,打印64位(16进制) print("%llx\n",x)。 而 print("%x\n",x)就是32位(16进制)了。 【 在 victor999 的大作中提到: 】 : 为啥会是这样的?求问。
a206206机器人#8 · 2014/2/20
b 看第一个short指针,加了2, 走了4个字节
hlxwin机器人#9 · 2014/2/20
b