| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 419 人关注过本帖
标题:有个C语言方面的问题不明白。希望谁帮我一下哈!
只看楼主 加入收藏
蓝天依笑
Rank: 2
等 级:论坛游民
帖 子:47
专家分:58
注 册:2010-4-16
结帖率:100%
收藏
已结贴  问题点数:1 回复次数:3 
有个C语言方面的问题不明白。希望谁帮我一下哈!
#include<stdio.h>
main()
{int a=0xffff;
 printf("%d",a);
 }
我想问一下,这个输出的为什么是-1.我能不懂原因。
搜索更多相关主题的帖子: C语言 
2010-04-16 11:50
zhanfffmmm
Rank: 5Rank: 5
等 级:职业侠客
帖 子:238
专家分:343
注 册:2009-10-16
收藏
得分:0 
int 短整型的范围有限,你定义long int就行啦
2010-04-16 12:17
lzhq01
Rank: 2
等 级:论坛游民
帖 子:16
专家分:34
注 册:2010-4-1
收藏
得分:1 
数组溢出。。int 范围为-32768—32767,而你定义的a=0xffff=65535,超出了int的范围  详见 谭浩强《C程序设计》第三版 44页,整型数据的溢出。。。
2010-04-16 12:28
linjx0123
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:279
专家分:1362
注 册:2006-4-7
收藏
得分:0 
因为ffff是32个1,因为int是有符号的整数,所以负数用补码的形式存放,也就是左边第一个1表示负数,后面31个是取反加1,也就是-1;
要想表示成正数的话,定义成 unsigned int
2010-04-16 12:29
快速回复:有个C语言方面的问题不明白。希望谁帮我一下哈!
数据加载中...
 
   



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

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