返回信息流在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
这是一条镜像帖。来源:北邮人论坛 / cpp / #77035同步于 2014/2/19
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
[问题]请教一道面试题
century
2014/2/19镜像同步16 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
#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
为啥会是这样的?求问。
【 在 gen123456 的大作中提到: 】
: #include<stdio.h>
: int main()
: {
: ...................
参考:
32位,64位整数及其print输出是不一样的。
对于32位机,设置64位用long long,打印64位(16进制) print("%llx\n",x)。
而 print("%x\n",x)就是32位(16进制)了。
【 在 victor999 的大作中提到: 】
: 为啥会是这样的?求问。