題目
先來看一下這個題吧
如圖已知代碼段,該代碼段的輸出結果為“25”,請問當前系統是()位元組序,
A、大端序 B、小端序
#include<stdio.h>
Int main()
{
int i=8217;
char c=(*(char *)&i);
printf(“%d\n”,c);
}
答案:小端序
決議:
實作思想:
1.定義一個 32 位的 int 型變數,
8217-》二進制0000 0000 0000 0000 0010 0000 0001 1001 -》16進制00 00 20 19
2. 將這個 int 型變數的低地址開始的八位存盤的值取出來,取出來的方法就是利用強制型別轉換
3. 如果這個值是 “0” 那么說明低地址存盤了值的高位,所以為大端序
4. 如果這個值是 “25” 那么說明低地址存盤了值的低位,所以為小端序
測驗:

輸出結果:

PS:8217轉化成16進制需要將前面補零,當系統為大端序的時候輸出的是0,而不是32. 當然網上其他博主還有其他的驗證方法,但大多數換湯不換藥,有什么不對的地方歡迎大佬指點,
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/280226.html
標籤:其他
