|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 求助
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
742
人关注过本帖,
1
人收藏
标题:
求助
只看楼主
加入收藏
死了都爱C
来 自:辽宁大连
等 级:
新手上路
帖 子:23
专家分:0
注 册:2008-3-9
楼主
收藏
(1)
问题点数:0 回复次数:5
求助
#include<stdio.h>
main()
{
short i;
i=-2;
printf("\n i: dec=%d, oct=%o, hex=%x, unsigned=%u\n",i,i,i,i);
}
运行结果:
i:dec=-2,oct=177776,hex=fffe,unsigned=65534
我是个初学者,可能这个问题提别的幼稚,但是我确实是不明白啊??谁能告诉我为什么会输出这样的结果啊?
2008-03-16 10:43
举报帖子
使用道具
赠送鲜花
forever74
来 自:CC
等 级:
版主
威 望:
58
帖 子:1694
专家分:4282
注 册:2007-12-27
第
2
楼
收藏
得分:0
short类型的i=-2
二进制形式是1111111111111110
而同样的二进制形式解释成八进制、十六进制和无符号十进制就是你给出那几个了。
就好像某人名字叫张三,可是不同情况下有人管他叫三哥、小三、老公、狗剩儿。
2008-03-16 11:03
举报帖子
使用道具
赠送鲜花
wubizao
来 自:荆州长大电信
等 级:
新手上路
帖 子:223
专家分:0
注 册:2006-6-24
第
3
楼
收藏
得分:0
看你的结果好像int为16位的
short i = -2;
i在内存中的排放是这样的:
1111 1111 1111 1110 (两字节,补码表示)
至于你是象输出int,还是unsigned,还是别的什么,只是输出对其解释不同
但是内存的东西不会改变.
%d输出,即int输出,同样两字节,默认有符号,即为-2
%o无符号八进制输出,重排下,看得更清楚,1 111 111 111 111 110:即为177776
%x十六进制输出,1111 1111 1111 1110即为fffe
%u无符号int输出,把符号位当作数值位,1111 1111 1111 1110(正数原吗补码相同)
即为65534
在路上走,看见了C,从此爱上了她
2008-03-16 11:05
举报帖子
使用道具
赠送鲜花
默默无纹
等 级:
新手上路
帖 子:45
专家分:0
注 册:2008-2-12
第
4
楼
收藏
得分:0
lz好好看看书吧,计算机是以补码形式显示的,先学习什么是补码在做这样的题比较好。
从来怨天尤人每每自封为神
常怜众生如蚁不意身本凡尘
2008-03-16 11:14
举报帖子
使用道具
赠送鲜花
overwhelming
等 级:
新手上路
帖 子:21
专家分:0
注 册:2008-3-15
第
5
楼
收藏
得分:0
3楼
好像很对啊
2008-03-16 11:17
举报帖子
使用道具
赠送鲜花
hoodlum1980
来 自:浙江大学
等 级:
论坛游民
威 望:
2
帖 子:289
专家分:23
注 册:2008-2-24
第
6
楼
收藏
得分:0
%o和%x都是无符号整数,所以最高位是被当作数字本身,而不是符号位。
2008-03-16 14:20
举报帖子
使用道具
赠送鲜花
6
1/1页
1
快速回复:
求助
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.016902 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved