| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 633 人关注过本帖
标题:C 小问题 请求解答
只看楼主 加入收藏
cquwt
Rank: 1
等 级:新手上路
帖 子:41
专家分:2
注 册:2013-12-24
结帖率:69.23%
收藏
已结贴  问题点数:2 回复次数:10 
C 小问题 请求解答
程序代码:
#include<stdio.h>
int main(){
    unsigned i=4294967296,m=4294967295;
    int k=4294967296,l=4294967295;
    printf("%d,%d,%d,%d,%d\n",i,i-1,i-2,sizeof(int),m);
    printf("%d,%d,%d,%d,%d\n",k,k-1,k-2,sizeof(unsigned),l);
}


用的是devC++,请问结果为什么是这个呢?
图片附件: 游客没有浏览图片的权限,请 登录注册
2014-08-29 17:50
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
收藏
得分:0 
你是想问%d和%u的输出差别?

梦想拥有一台龙芯3A-4000
2014-08-29 17:59
cquwt
Rank: 1
等 级:新手上路
帖 子:41
专家分:2
注 册:2013-12-24
收藏
得分:0 
回复 2 楼 ditg
其实最主要是想问为什么输出的不是原数,而是负数或0呢
另外:4294967296是2的32次方
2014-08-29 18:05
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
收藏
得分:0 
二进制编码后的解析问题

梦想拥有一台龙芯3A-4000
2014-08-29 18:07
cquwt
Rank: 1
等 级:新手上路
帖 子:41
专家分:2
注 册:2013-12-24
收藏
得分:0 
回复 4 楼 ditg
可以说的详细直白些吗,,,
2014-08-29 18:13
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
收藏
得分:0 
#include <stdio.h>
#include <limits.h>

int main(void)
{
    printf("%d\n", UINT_MAX);
    printf("%u\n", UINT_MAX);
    return 0;
}

梦想拥有一台龙芯3A-4000
2014-08-29 18:21
cquwt
Rank: 1
等 级:新手上路
帖 子:41
专家分:2
注 册:2013-12-24
收藏
得分:0 
回复 6 楼 ditg
我学的还不深 不懂你说的和这个有什么联系
答案是这样说的:
32位无符号二进制数能表示的最大十进制数是 4294967295.把它变成对应的二进制数再加1,产生数据溢出,而后32位全为0.so结果为0.
可是这是什么原理呢,,我是哪个地方没理解到位呢?
2014-08-29 18:27
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
收藏
得分:1 
“32位无符号二进制数能表示的最大十进制数是 4294967295”,二进制编码就是32位的1,加1就不断进位,变成33位1后面全是0,溢出了呗,后面32位解码十进制就是0,呵呵

梦想拥有一台龙芯3A-4000
2014-08-29 18:36
waiwai_bbs
Rank: 1
来 自:重庆
等 级:新手上路
帖 子:2
专家分:0
注 册:2014-8-29
收藏
得分:0 
unsigned i=4294967296,m=4294967295;
首先 unsigned是32位的,即2^32=4294967296,无符号的数据区间为[-2^31,2^31-1];即数据会在2^31处产生溢出变成-2^31。这下你应该知道4294967296为什么会变成0了。

命苦不能怪政府,点背不能怪社会。
2014-08-29 21:29
cquwt
Rank: 1
等 级:新手上路
帖 子:41
专家分:2
注 册:2013-12-24
收藏
得分:0 
回复 9 楼 waiwai_bbs
unsigned不是无符号吗,怎么包括负数呢?
除了unsigned 还有int呢,int是包括负数的,怎么解释?
这块说的是有关补码吗???
2014-08-29 21:51
快速回复:C 小问题 请求解答
数据加载中...
 
   



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

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