|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 新人求助一个小小问题
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
467
人关注过本帖
标题:
新人求助一个小小问题
只看楼主
加入收藏
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
快速回复:
新人求助一个小小问题
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.020777 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved