| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 708 人关注过本帖
标题:小弟是初学者 帮我看个程序 解释一下谢谢
取消只看楼主 加入收藏
雨夜梧桐
Rank: 2
等 级:论坛游民
帖 子:63
专家分:89
注 册:2010-6-4
结帖率:83.33%
收藏
 问题点数:0 回复次数:3 
小弟是初学者 帮我看个程序 解释一下谢谢
#include<stdio.h>
int main()
{
short i;
i=-4;
printf("\ni:%d,oct=%o,hex=%x,unsigned=%u\n",i,i,i,i);
return 0;
}      
输出时这个样子;
i:-4,oct=37777777774,hex=fffffffc,unsigned=4294967292
Press any key to continue
为什么以八进制六十进制的输出是这个样子,而不是换算成十进制为-4呢?
谢谢!
搜索更多相关主题的帖子: 解释 
2010-11-22 11:48
雨夜梧桐
Rank: 2
等 级:论坛游民
帖 子:63
专家分:89
注 册:2010-6-4
收藏
得分:0 
回复 2楼 五当家
您的意思是整形在计算机的储存是以二进制的补码形式,然后转换成八进制,十六进制,那为什最后的%u输出是
4294967292呢?小弟是初学者,遇到了很多问题,身边没有会C语言的,问的可能太简单了。见谅。
#include<stdio.h>
int main()
{
short i;
i=4;
printf("\ni:%d,oct=%o,hex=%x,unsigned=%u\n",i,i,i,i);
return 0;
}      
为什么改成i=4的输出是

i:4,oct=4,hex=4,unsigned=4
Press any key to continue
2010-11-22 12:15
雨夜梧桐
Rank: 2
等 级:论坛游民
帖 子:63
专家分:89
注 册:2010-6-4
收藏
得分:0 
回复 4楼 袁野
此话怎讲?
2010-11-22 21:30
雨夜梧桐
Rank: 2
等 级:论坛游民
帖 子:63
专家分:89
注 册:2010-6-4
收藏
得分:0 
回复 6楼 JIE55555LI
谢谢
2010-11-22 21:30
快速回复:小弟是初学者 帮我看个程序 解释一下谢谢
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021959 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved