搜索
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 新人求助一个小小问题
标题:
新人求助一个小小问题
只看楼主
qq949392025
等 级:
新手上路
帖 子:2
专家分:0
注 册:2011-11-12
结帖率:
0
楼主
已结贴
√
问题点数:20 回复次数:3
新人求助一个小小问题
#include <stdio.h>
int main()
{
int a=131073;
printf("%d\n",a);
short *b=&a;
printf("%d %d",*b,*(b+1));
system("pause");
return 0;
}
这样子 输出结果 是 1 2
如果 把a的值换成5
输出结果是 5 0
这是怎么回事。谁给个解释
搜索更多相关主题的帖子:
include
system
return
2011-11-12 22:53
heroinearth
来 自:云南曲靖
等 级:
青峰侠
帖 子:430
专家分:1506
注 册:2011-10-24
第
2
楼
得分:20
是因为int,和short的长度不一样,int因编译器不同可能是16位或是32位,而short是16位,你用*b后只能读取低16位中的内容,*(b+)又是下一个16位中的内容
2011-11-12 23:05
qq949392025
等 级:
新手上路
帖 子:2
专家分:0
注 册:2011-11-12
第
3
楼
得分:0
你能给出 他的具体实现吗。比如 写出 每个数字在 内存 中的 表示 形式。。。那样子看的 会比较直接 ,,我也明白 你说的这个意思 。但是 我不懂 补码。等 一些 码制的 运算和换算 。。谢谢了
2011-11-12 23:17
heroinearth
来 自:云南曲靖
等 级:
青峰侠
帖 子:430
专家分:1506
注 册:2011-10-24
第
4
楼
得分:0
数据在内存中的存储是底字节在前,高字节在后,就如131073的16进制表示是20001,在内存中的存储是:01000200,*b指向的是0100,*(b+1)指向的是02开始的单元,int占了四个字节
5的16进制是:5,在内存中是05000000,
2011-11-12 23:27
4
1/1页
1
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-355118-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.079388 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved