为什么以下打印它的作用?

nov*_*ice 2 c

typedef unsigned char byte;

unsigned int nines = 999;
byte * ptr = (byte *) &nines;


printf ("%x\n",nines);
printf ("%x\n",nines * 0x10);
printf ("%d\n",ptr[0]);
printf ("%d\n",ptr[1]);
printf ("%d\n",ptr[2]);
printf ("%d\n",ptr[3]);
Run Code Online (Sandbox Code Playgroud)

输出:

3e7
3e70
231
3
0
0
Run Code Online (Sandbox Code Playgroud)

我知道前两个只是999和999*16的十六进制表示.剩下的4是什么意思?ptr [0]到ptr [3]?

Zak*_*kir 6

你最有可能在一个32位LE系统上999以十六进制运行它: -
00 00 03 E7- 它将存储在内存中的方式是
E7 03 00 00这样的: -

ptr[0]指向包含E7小数点231
ptr[1]的字节,包含03小数点为3
ptr[2]的字节,包含00小数点为0
ptr[3]的字节,包含00小数点为0 的字节

HTH!