| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 694 人关注过本帖
标题:为什么输出结果是:l=-1
只看楼主 加入收藏
vtyvpn
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-11-6
收藏
 问题点数:0 回复次数:9 
为什么输出结果是:l=-1
main()
{
unsigned int l;
l=65535;
printf("%d\n",l);
}

为什么输出结果是:l=-1;
搜索更多相关主题的帖子: 结果 输出 
2006-11-16 21:01
jd205
Rank: 2
等 级:论坛游民
帖 子:139
专家分:69
注 册:2006-10-26
收藏
得分:0 
65535好象超出了unsigned int的范围.
我也不确定~!
2006-11-16 21:05
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

无符号数65535的二进制是1111111111111111.
在输出时,是按符号数输出的,所以是-1.因为-1的补码(机器存储码)是1111111111111111


倚天照海花无数,流水高山心自知。
2006-11-16 21:09
☆註⊙諨☆
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2006-10-7
收藏
得分:0 
建议楼主看好 二进制 。。。还有数的范围控制。。。

2006-11-16 21:09
剑风曲
Rank: 1
等 级:新手上路
帖 子:69
专家分:0
注 册:2006-11-16
收藏
得分:0 
主要是类型的问题,楼主附值的时候用了无符号类型,输出的时候用了整型,所以出现结果是-1.
楼主用的是TC吧?有些编译器int占4个字节的,有些2个字节,TC就是2个字节的,如果是4个字节,也不会出现-1这个结果.
2006-11-16 21:18
chen_hw1987
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-11-17
收藏
得分:0 
建议
建议楼主研究下二进制和数据类型

65535好象越界了

所有認同我的人.你們都是我身體的一部分.你們相信我,我也相信大家.我願意為你們、為你們的理想而戰鬥
2006-11-17 13:20
福尔摩斯
Rank: 5Rank: 5
等 级:贵宾
威 望:12
帖 子:4011
专家分:370
注 册:2006-8-15
收藏
得分:0 
[signed] int的范围是 -32768——32767即 -2^15—— 2^15-1(^是乘方号),比特位数是16

unsigned int的范围是 0——65535即 0——2^16-1,比特位数是16

[signed] short [int]的范围是-32768——32767即 -2^15—— 2^15-1,比特位数是16

unsigned short [int]的范围是 0——65535即 0——2^16-1,比特位数是16

long [int]的范围是 -2147483648——247483647即 -2^31—— 2^31-1,比特位数是32

unsigned long [int]的范围是 0——4294967295即 0——2^32-1,比特位数是32

注意每行红色字体的部分

附带说下:3楼的是正解

楼主如果还有什么不明白的建议去看看2进制和10进制之间的转换!

至于为什么C语言会采用一些2进制的标准,这和C语言自身有关

2进制是低级语言用的,特别是机器语言(汇编语言也是低级语言),因为C语言有一些汇编的功能,所以C语言也被叫作:中级语言。

楼主这些背景资料要弄清楚一下比较好

自我放逐。。。
2006-11-17 14:44
云中雾
Rank: 1
等 级:新手上路
威 望:1
帖 子:168
专家分:3
注 册:2005-12-30
收藏
得分:0 

该说的前面的都说了,我还能说什么呢。


白色的忧郁让我白色的思念从洁白到苍白,从苍白到空白,比空白更空白,变成深白的坦白!
2006-11-17 16:16
guzhou
Rank: 1
等 级:新手上路
威 望:1
帖 子:247
专家分:0
注 册:2006-11-4
收藏
得分:0 
输出类型应与定义类型相同

2006-11-17 18:01
KEVIN_LEE
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2006-11-3
收藏
得分:0 

数据类型确实很重要,注意掌握好.

2006-11-17 21:19
快速回复:为什么输出结果是:l=-1
数据加载中...
 
   



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

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