一本C语言的书中的一些东西不理解,求指教,内容如下

例如,若有以下说明:
int a; unsigned b; long c;
语句:c=70000L;b=c;a=c;则c中的值为70000,b和a截取c的两个低字节中的内容,其值为4464。【以上的话是什么意思?c的值我明白,b、a不懂】

内存中,a,b占4个字节,c占8个字节,高字节向低字节赋值,取c的低字节赋给a和b,不懂再问哦追问

很感谢你的回答。"高字节向低字节赋值,取c的低字节赋给a和b” 具体过程是怎么样的呢?能再解释得具体一点吗

追答

比如e在内存中是这样存储的(占8位)1 1 0 0 1 1 0 0
而f占4位,则f=e的结果是,f在内存中为 1 1 0 0(e的后4位)

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-21
unsigned int型取值范围为0---65535,即2的16次方减去1;超过65536的话就是溢出,二进制最高位为1,65536的结果也就是0,a的结果为负数,即-4464,最高位为1,这些用二进制表示计算一下的话你会明白的
第2个回答  2012-11-21
前提是long是32位数,int 和 unsigned是16位数。
c=70000L的二进制表示:0000 0000 0000 0001 0001 0001 0111 0000

b和a只有16位,所以只能截取c的低16位,即0001 0001 0111 0000,这个二进制数的十进制值为4464。