1、一些問題
問題1
#include "stdio.h" union { int i; char ch[2]; }key; main() { key.i=65*256+66; printf("%c\t%c\n",key.ch[0],key.ch[1]); }
答案是B A;為什麼不是A B呢?
在前面的文章中我們已經測試過,X86體系結構的CPU是小端模式的。比如一個數0x1234,放在內存裡按照內存地址從低往高實際上是低地址字節裡放的是0x34,高字節裡放的是0x12。小端模式和我們平時感覺上的一致,把數位數越高的部分放在地址越高的部分。union類型是共享內存的,union中是按照從低到高放的,i=0x4142,也就是低地址中放的是42,高地址中放的是41,按照ch[0],ch[1]的順序輸出就是B A。如果是大端模式的話就是打印兩個空了,故不會出現A B的情況。
本欄目