一、問題
????????C語?的最?特?就是可移植性好。根據機器類型的不同,?位優先與低位優先也不同。那么,最好的可移植的 C 程序應該同時適?這兩種類型的計算機。下?了解?下?位優先與低位優先的不同之處。
二、解答
????????所謂的?位優先,就是最低的地址放在?位字節上,?低位優先就是最低的地址放在低位字節上。通過下圖形象地理解?下低位優先與?位優先的不同。
????????若機器為低位優先,則將低位字節 10 存放在低地址中,機器讀取出來的結果為10; 如果機器為?位優先,則將低位字節 10 存放在?地址中,機器讀取出來的結果為 0 。
????????可以通過如下程序來證明機器是?位優先還是低位優先。代碼如下。
#include <stdio.h>
#include<string.h>
int main()
{int a = 10;short b;memcpy(&b, &a, 2);printf("%d\n", b);
}
????????運?結果如下所示。
10
????????由運?結果為10 可以得知,運?此程序的機器為低位優先。
????????在計算機中,對于 int、 short、 long 數據類型存在字節順序,? char 類型只有1B,因此與字節順序?關。對于 float 和 double 類型的值,沒有?種標準的存儲模式。
三、總結
?????????位優先與低位優先的區別僅僅在于機器是喜歡從左向右數,還是喜歡從右向左數。