一、问题
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 类型的值,没有⼀种标准的存储模式。
三、总结
⾼位优先与低位优先的区别仅仅在于机器是喜欢从左向右数,还是喜欢从右向左数。