|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 长短整形问题
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
1217
人关注过本帖
标题:
长短整形问题
只看楼主
加入收藏
维他命Q
等 级:
新手上路
帖 子:21
专家分:7
注 册:2012-1-12
第
21
楼
收藏
得分:0
回复 9楼 xiestone1992
图片附件: 游客没有浏览图片的权限,请
登录
或
注册
这个意味着???
2012-02-13 20:46
举报帖子
使用道具
赠送鲜花
维他命Q
等 级:
新手上路
帖 子:21
专家分:7
注 册:2012-1-12
第
22
楼
收藏
得分:0
回复 17楼 TonyDeng
加个%u竟然可以了,我看的是谭浩强第三版,那里说long的范围-2147483648~2147483647 ,加unsigned可以到4294967294。也说了按机子分类,但只说short 和int不同机子可能不同 ,而long 都一样。我这部电脑32位,我想可以到4294967294吧!结果%u可以,%d或者%ld不可以。
2012-02-13 20:59
举报帖子
使用道具
赠送鲜花
TonyDeng
等 级:
贵宾
威 望:
304
帖 子:25859
专家分:48889
注 册:2011-6-22
第
23
楼
收藏
得分:6
int到底有多少容量,與機器和編譯器有關,舊編譯器固然跟舊機器一起,但新編譯器也可以有自己不同的處理辦法,不是全部一樣的。一般地,int保證覆蓋16位那個取值範圍(即最少16位),但具體實現是不限的,可能是32位,甚至也可能是64位,這與編譯器做編譯時的方便和優化手段有關。在VC中,設置int是32位的,long int也是32位的,也就是說,int與long是一樣的。
C標準並沒有規定帶符號的數據應該用什麼形式表示,允許編譯器自由發揮,但一般上大家的措施都一致,選用最高位為1表示負數(但不是說必然永遠如此的),那樣,對帶符號的數據來說,32位的int實際上只有31位可用(即2的31次方),而不需要考慮符號時就可以把32位全部用完(即2的32次方)。
[
本帖最后由 TonyDeng 于 2012-2-13 21:23 编辑
]
授人以渔,不授人以鱼。
2012-02-13 21:16
举报帖子
使用道具
赠送鲜花
pangding
来 自:北京
等 级:
贵宾
威 望:
94
帖 子:6784
专家分:16751
注 册:2008-12-20
第
24
楼
收藏
得分:2
c 标准只是说 int 是介于 short 和 long 之间。不会比 long 长。不过确实,int 的长度没有硬性规定。
至于楼主问的,输出所谓 %u, %d 的问题,那只是输出的时候显示着有所区别,数据本身是一样的。
你给个 int 过去也可以用 %f 来输出,乱七八糟的而已,没什么意思。同样,int 过去用 %u, unsigned 过去用 %d 一样应该看成是乱七八糟的数据。
只不过,int 和 unsigned 之间有一大堆整型提升(integral promotion)的规则在约束,编译器不一定给警告就是了。
2012-02-13 22:20
举报帖子
使用道具
赠送鲜花
snakelazixp
等 级:
论坛游民
帖 子:51
专家分:94
注 册:2012-2-13
第
25
楼
收藏
得分:2
格式控制符错了,用%u输出。。。。。。。
2012-02-13 22:48
举报帖子
使用道具
赠送鲜花
25
3/3页
1
2
3
快速回复:
长短整形问题
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.013005 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved