在X86下,有下列程序
#include<stdio.h>void main(){ union { short k; char i[2]; }*s, a; s = &a; s->i[0] = 0x39; s->i[1] = 0x38; int q = a.k; PRintf("%x/n", q); //int i = 0x12345678; //printf("%0x/n",i); system("pause");}這是在小端機器上運行的結果,因為char 是按字節存儲的,從下圖可以看出先把0x39放在s->i[0]最低地址處,再把0x38放在s->i[1]次低地址處
聯合體是共享內存的,a.k的存儲空間和a.i是一樣的,因此打印q時高位便是38地位是39,即3839.
下圖幫助理解小端存儲:
新聞熱點
疑難解答