鱼C论坛

 找回密码
 立即注册
查看: 3766|回复: 9

int的范围到底是多少??

[复制链接]
发表于 2011-7-5 15:43:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
看了小甲鱼的视频说是:4字节,范围是(-2^16~2^16)

我又在网上看到

多数平台上int占4个字节(32位,不是16位!),所以能表示的范围就是2的32次方,表示为数值是-2^(32-1) ~ 2^(32-1) -1 ( ^ 表示成方 )(就是 -2^31 ~ 2^31 - 1, 而不是2^16...)



好纠结啊

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-5 17:06:38 | 显示全部楼层
一位就是一个0或者1,每个字节 是 8位 ,4字节是 32 位,有符号整数的最高位是符号位,所以只有31位有效,可以表示 2 的 31次方个数,但是0也是一个数,所以最大数是 2的31次方  再减掉一 1。 最小的负数也一样。
浮点数有另外的计算方法。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
头像被屏蔽
发表于 2011-7-5 18:00:08 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-5 21:06:14 | 显示全部楼层
本帖最后由 excessstone 于 2011-7-5 21:09 编辑

除了和编译器对int的定义以外,更根本的是数值运算的问题。
比如10进制整数可以无误的转换成2进制整数,但是小数转换就会有误差,
还有极大数减极小数,极小数乘极大数等问题。
彻底理解及避免运算错误,必须研究数值算法。这方面的书很多。
但是作为初学者,只要心中有个概念就好了。记得在这些特殊情况下会出问题。
以后在实际运用中如果遇到这些问题,再做彻底研究。因为没有理论基础
是无法彻底理解和解决此类问题的。
一开始就纠结于这些专题,很影响学习的进度和信心。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-5 22:54:47 | 显示全部楼层
没事 我记得c++里的是32位  c貌似也是哈不过有的可能16位
int不止一种嘞  
有 无符号整形
    无符号长整形
    有符号整形
     有符号长整形  
如果没修饰前缀的话 默认有符号整形
形象的说就是 把其中16位分给负数 另外16位给了正数  自己算算吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-5 23:09:06 | 显示全部楼层
一般来说Int是占4字节
针对不同的操作系统int所占的字节是不同的 有2字节 也有4字节
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-7-6 09:07:58 | 显示全部楼层
那我的电脑是32位的,(就是 -2^31 ~ 2^31 - 1, 而不是2^16...)???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
头像被屏蔽
发表于 2011-7-6 09:19:01 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-11 00:23:40 | 显示全部楼层
没事 我记得c++里的是32位  c貌似也是哈不过有的可能16位
int不止一种嘞  
有 无符号整形
    无符号长整形
    有符号整形
     有符号长整形  
如果没修饰前缀的话 默认有符号整形
形象的说就是 把其中16位分给负数 另外16位给了正数  自己算算吧



正解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-8-1 15:46:38 | 显示全部楼层
不同的平台,会有不同的结果。
标准答案:-(2^sizeof(int)-1)——2^sizeof(int)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-2-7 23:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表