| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 806 人关注过本帖
标题:问个C语言题目
只看楼主 加入收藏
BYSF_XF
Rank: 2
等 级:论坛游民
帖 子:89
专家分:75
注 册:2011-4-25
结帖率:88.89%
收藏
已结贴  问题点数:5 回复次数:10 
问个C语言题目
程序代码:
void main()
{
    short i=-4;
    printf("\ni:dec=%d,oct=%o,hex=%x,unsigned=%u\n",i,i,i,i);
}

问输出结果是多少
我的答案是:  i:dec=-4,oct=-4,hex=-4,unsigned=4
在VC++6.0上测试结果是:dec=-4,oct=37777777774,hex=fffffffc,unsigned=4294967292
书上的答案是:dec=-4,oct=177774,hex=fffcunsigned=65532

极度困惑中,求高手解答
搜索更多相关主题的帖子: 答案 C语言 测试结果 
2011-05-17 14:04
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:5 
VC里的int是多少位的?
书上的int是多少位的?

我们都在路上。。。。。
2011-05-17 14:19
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:0 
有可能是位数不同,一个是16位的,一个是32位的。
2011-05-17 14:20
墨竹
Rank: 2
等 级:论坛游民
帖 子:29
专家分:39
注 册:2011-5-16
收藏
得分:0 
肯定是位数不同,而且8进制和16进制是无符号的,所以数据中第1位用来表示负号的1,会被当做一般数据处理。
2011-05-17 15:25
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
自己看内存吧  看看十六进制下内存是个什么样子 就可以了

                                         
===========深入<----------------->浅出============
2011-05-17 21:20
其实、不想说
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:122
专家分:156
注 册:2011-3-3
收藏
得分:0 
2011-05-17 21:51
BYSF_XF
Rank: 2
等 级:论坛游民
帖 子:89
专家分:75
注 册:2011-4-25
收藏
得分:0 
书上说的short是与int一样的,貌似
2011-05-17 22:00
w280683395
Rank: 2
等 级:论坛游民
帖 子:5
专家分:17
注 册:2011-5-16
收藏
得分:0 
以下是引用BYSF_XF在2011-5-17 14:04:55的发言:

void main()
{
    short i=-4;
    printf("\ni:dec=%d,oct=%o,hex=%x,unsigned=%u\n",i,i,i,i);
}
问输出结果是多少
我的答案是:  i:dec=-4,oct=-4,hex=-4,unsigned=4
在VC++6.0上测试结果是:dec=-4,oct=37777777774,hex=fffffffc,unsigned=4294967292
书上的答案是:dec=-4,oct=177774,hex=fffcunsigned=65532
 
极度困惑中,求高手解答
i=4 在计算机中存储为00000000 00000100(2字节)
i=-4在计算机中存储为11111111 11111100
i=-1在计算机中存储为11111111 11111111
i=0 在计算机中存储为00000000 00000000
所以把i=-4 化为八进制时先转换为4字节11 111 111 111 111 111 111 111 111 111 100(二进制)=37777777774(八进制)
                                    1111 1111 1111 1111 1111 1111 1111 1100(二进制)=fffffffc(十六进制)=4294967292(十进制)
2011-05-17 22:29
kayingn
Rank: 1
等 级:新手上路
帖 子:24
专家分:3
注 册:2011-5-12
收藏
得分:0 
不同的编译系统为整型数据分配的字节数是不同的,c++是4个字节,所以会溢出的数的大小是不同的
2011-05-18 11:54
BYSF_XF
Rank: 2
等 级:论坛游民
帖 子:89
专家分:75
注 册:2011-4-25
收藏
得分:0 
回复 8楼 w280683395
我们学数制的时候,好像是说最高位才是表正负的,那个-4的其它位怎么也是1
2011-05-18 18:18
快速回复:问个C语言题目
数据加载中...
 
   



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

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