c语言整数变量类型的取值范围是什么意思?像short int的取值范围是-32768〜32767,

是不是说他只可以定义-32768〜32767之间的数... 是不是说他只可以定义-32768〜32767之间的数 展开
 我来答
GhostWzf
2013-06-12 · TA获得超过1092个赞
知道小有建树答主
回答量:313
采纳率:100%
帮助的人:508万
展开全部
取值范围和编译器有关
没记错的话最早的Turbo C里int才是-32768~32767的取值范围,现在因为机器牛x了一次能处理的位数就增多了使得原来的int变成了现在的short int
扯远了。。下面说明这个范围是怎么来的

既然讨论计算机 就不能不提二进制
计算机处理和记录数据用的都是二进制 这里也一样
short int 可以叫做“有符号短整数” (对比unsigned short int “无符号短整数”)
在计算机内存中一般是用2个字节(2byte, 16bit)来保存的(这个各个编译器可能不同,C下是2byte)
16bit也就是16位,每位上可以放0或1
又因为是有符号,所以最高位被定义为符号位,且用补码形式存储在内存中
正数的补码就是原码,负数的补码为原码的符号位外各位取反+1
因此正数能表示的范围就是0000000000000000~0111111111111111也就是+0~+32767(+0~+2^15-1)
负数能表示的范围是1000000000000000~1000000000000001也就是-0~-32767(-0~-2^15+1)
又-0的1000000000000000取补后为(1)0000000000000000和+0一样故被定义为最小值-32768
所以short int的取值范围是-32768~32767 (-2^15~2^15-1)
也是为什么你算32767+1的时候会直接变成-32768,
因为0111111111111111+1 = 1000000000000000即-32768的补码

同理如果是int有符号整数的情况下,因为int一般采用4byte(32bit)存储(Turbo C是2byte),若用原码存储则取值范围本该是 -2^32+1~2^32-1 由于有符号为解决正负0问题实际用补码保存,-0的补码被定义为最小值-2^32 因此int的取值范围是-2^32~2^32-1

同理无符号短整数(unsigned short int)的情况下,和有符号短整数一样一般用2byte(16bit)存储,但因为是无符号故不考虑补码存储问题也不考虑符号位,全部16bit都作为数据位来使用,所以最小值理所当然是0000000000000000,即0;最大值为1111111111111111,即2^16-1=65535,故unsigned short int 的取值范围是0~65535。

其它类型以此类推,只要知道编译器怎么定义它在内存中的存储容量就可以计算它的取值范围
浮点型数据类型的取值范围计算稍微麻烦点,有兴趣的话可以深入研究一下。

你定义X=100,要看X是用于干什么的,如果只是为了记录100这个数字只要符合条件用什么类型都可以,但如果要做某种运算就要依照运算结果来选择合适的数据类型
比如说X可能会变成负数,那么就必须使用有符号的数据类型,如果X可能会变的超过65535 就要考虑用短整型以外的数据类型,如果X会变成天文数字恐怕什么数据类型都不能使用因而必须自己创造属于自己的数据类型(高精度计算什么的)。。
大雅新科技有限公司
2024-11-19 广告
这方面更多更全面的信息其实可以找下大雅新。深圳市大雅新科技有限公司从事KVM延长器,DVI延长器,USB延长器,键盘鼠标延长器,双绞线视频传输器,VGA视频双绞线传输器,VGA延长器,VGA视频延长器,DVI KVM 切换器等,优质供应商,... 点击进入详情页
本回答由大雅新科技有限公司提供
百度网友e4f8389
2013-06-11 · TA获得超过118个赞
知道答主
回答量:176
采纳率:0%
帮助的人:111万
展开全部
整型变量取值范围是指你定义了一个变量short int x;那么这个x的值不能超出
-32768-32767的范围,你比如说x=32767;x=x+1;那么x就等于-32768
追问
那定义X=100,是不是可以用任意一个类型定义
追答
你要先定义才能赋值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
金色潜鸟
推荐于2018-03-13 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5744万
展开全部
c语言 整型, 有若干种。
不同种的类型,变量的取值各有一个范围,就是说,无论你赋值给它,或运算中它获得数值,不能超出这种类型的 最大值和最小值 规定的 值。
这些值等于几,你可以查看你的编译器带的头文件 <limits.h>

我的MS VC++ 6.0 规定了
#define MB_LEN_MAX 2
#define SHRT_MIN (-32768) // short int 最小
#define SHRT_MAX 32767 // short int 最大
#define USHRT_MAX 0xffff // unsigned short int 最小
#define INT_MIN (-2147483647 - 1) // int 最小
#define INT_MAX 2147483647 // int 最大
#define UINT_MAX 0xffffffff // unsigned int 最大
#define LONG_MIN (-2147483647L - 1) // long int 最小
#define LONG_MAX 2147483647L //long int 最大
#define ULONG_MAX 0xffffffffUL //unsigned long int 最大
此外 还有 64 位 的。。。这里 从略。

C语言,变量要先声明,后使用,就是因为不同类型的数的允许范围不同,不同类型的数的运算算方法不同。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0bf2197
2013-06-11 · TA获得超过943个赞
知道小有建树答主
回答量:596
采纳率:50%
帮助的人:107万
展开全部
你的理解也不能说完全不对。
但是你的理解方式有问题。

对于X=100,你说是哪个类型你搞不清楚。
但是在编写程序时,你要首先定义X的类型才能给它赋值。
所以,你的想法反了。不是有这个值判断他是什么类型
而是由它是什么类型,判断他的取值是否正确
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式