搜索
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 长短整形问题
标题:
长短整形问题
只看楼主
维他命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
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-360635-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.469486 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved