選題一
見相關資料:浮點數的二進制表示
選題三
問題
printf("%s\n",c)對應輸出"eUNH"呢?
解答
先說一下打印字符串的方法:以c爲首地址,依次打印每一個字節,遇到ASCII碼爲0的字節停止(即遇到字符串終止符'\0')。
我們知道c數組的第一個int,佔4個字節,每個字節的ASCII碼分別爲72('H')、78('N')、85('U')、101('e');第二個int每個字節的ASCII碼分別爲114('r')、0('\0')、0('\0')、0('\0')。
先說結論,我們的機器是“小端”,即小地址保存的是低位。
所以,這2個int(8個字節)的排列爲'e' 'U' 'N' 'H' '\0' '\0' '\0' 'r',打印的結果也就不言而喻了。
選題五
問題:如何編程判斷機器是“大端”還是“小端”?
解答:以下函數,返回1則爲小端
int checkSystem(void) { int i = 0x12345678; char *c = &i; return ((c[0] == 0x78) && (c[1] == 0x56) && (c[2] == 0x34) && (c[3] == 0x12)); }