
一、变量取值范围与存储大小
先说整数吧有符号的是 -32768~-32767 我为什么定义变量取1000000也可以。
首先整数分为byte,short,int,long和long long。你说的这个范围是半字(halfword)也就是short。
严格的来说,给short变量赋值为1000000是不被允许的,编译器至少会报Warning,更重要的是由于溢出,所以实际上它的值已经不是1000000,而是16960。 它的范围到底指的是什么。
我知道它是16位。但是我搞不懂的是它取值范围莫非不能大于16位2个字节? short类型的范围就是你说的-32768到32767,不能超过16位2个字节。
一旦超过就等于从头来了。例如你给它赋值为32768,它就当做是-32768了,赋值为-32769就当做是32767了。
以上例子如下所示: [root@me ~]$ cat 1.c #include 但是在硬盘又显示出了实际大小。 char类型就是一个字节的存储,不可能存放一篇文章那么多的字符串。 如果这么书写代码的话,编译器至少报Warning,执行必然是数组越界报告段错误。 麻烦说下。 不麻烦,如果有用请采纳,不明白可追问。 PS. 数据宽度和取值范围是随着CPU和编译器变化的,例如long在有的机器上是32位,有的则为64位,例如char的取值范围可能是-128至127,但在-funsigned-char选项编译时则范围是0至255。 先说整数吧有符号的是 -32768~-32767 我为什么定义变量取1000000也可以。 首先整数分为byte,short,int,long和long long。你说的这个范围是半字(halfword)也就是short。 严格的来说,给short变量赋值为1000000是不被允许的,编译器至少会报Warning,更重要的是由于溢出,所以实际上它的值已经不是1000000,而是16960。 它的范围到底指的是什么。 我知道它是16位。但是我搞不懂的是它取值范围莫非不能大于16位2个字节? short类型的范围就是你说的-32768到32767,不能超过16位2个字节。 一旦超过就等于从头来了。例如你给它赋值为32768,它就当做是-32768了,赋值为-32769就当做是32767了。 以上例子如下所示: [root@me ~]$ cat 1.c #include main() { short a=1000000; short b=32768; short c=-32769; int d=1000000; printf("%d,%d,%d,%d\n",a,b,c,d); } [root@me ~]$ gcc 1.c 1.c: In function 'main': 1.c:4: warning: overflow in implicit constant conversion 1.c:6: warning: overflow in implicit constant conversion [root@me ~]$ ./a.out 16960,-32768,32767,1000000 再说CHAR型一个字节的存储。那我为啥存放一篇文章那么多的字串也可以?难道一篇文章不足1字节。 但是在硬盘又显示出了实际大小。 char类型就是一个字节的存储,不可能存放一篇文章那么多的字符串。 如果这么书写代码的话,编译器至少报Warning,执行必然是数组越界报告段错误。 麻烦说下。 不麻烦,如果有用请采纳,不明白可追问。 PS. 数据宽度和取值范围是随着CPU和编译器变化的,例如long在有的机器上是32位,有的则为64位,例如char的取值范围可能是-128至127,但在-funsigned-char选项编译时则范围是0至255。 一、正确理解概念函数定义告诉我们,自变量的取值范围就是使函数有意义的自变量取值的全体,若函数关系是由解析式确定的,则自变量的取值范围就是使解析式本身有意义的自变量取值的全体;若函数的解析式是由一个实际问题或几何问题得出来的,则自变量的取值范围还要考虑符合实际意义或几何意义.二、熟练应用方法使函数解析式有意义的自变量取值的全体就是自变量的取值范围.当解析式中的分母含有自变量时,则要使分式的分母不等于零;当偶次根号下的被开方式中含有自变量时,则需使被开方式不小于零……,因此,求自变量的取值范围是和解不等式或不等式组分不开的.几何问题中的函数关系往往和某些几何元素的运动变化相关,在确定其自变量的取值范围时,我们经常是在几何元素运动变化的范围内进行观察,得到自变量取得最小值及最大值的位置,并求出这个最值,以确定自变量的取值范围.。 1,INT变量取值范围,-32768~32767。 2,INT变量分为,短整型(short int ),长整型(long int),无符号型字节(unsigned int),有符号型字节(signed int ),无符号长整型(unsigned long)不同类型具体范围如下: short int -32768~32767 signed int -32768~32767 unsigned int 0~65535 long int -2147483648~2147483647 unsigned long 0~4294967295 -21768~+32767? 应该是-32768~+32767吧?这是在16位编译器(如Turbo C 2.0)里的取值范围,是很久以前的取值范围,现在的计算机和以前不同了,都流行32位的处理器了。 int型在PC上一般都占4个字节的内存,也就是用 11111111 11111111 11111111 11111111 这32位的二进制数来表示int型变量的数值,可表示的数值范围可不止-21768~+32767这么点了; 无符号整形(unsigned int)变量的取值范围为:0~4294967295 ; 而整形(int)变量的取值范围为:2147483648~2147483647 . 如果你的值超出取值范围,也就是超出int型变量的内存空间,那就内存溢出,影响到其它变量的值,因为其它变量和这个int型变量的内存空间是相邻的。 解决方法,可用更大的取值范围的类型代替,实在不行的话,用字符串代替。 一、整数类型(没有小数部分) INTEGER:取值范围[-32768,32767]。占用内存2个字节(16位)。 WORD:取值范围[0,65535]。占用内存2个字节(16位)。 BYTE:取值范围[0,255]。占用内存1个字节(8位)。 LONGINT:取值范围[-2147483648,2147483647]。占用内存4个字节(32位)。 SHORTINT:取值范围[-128,127]。占用内存1个字节(8位)。 二、实数类型 REAL:取值范围[2.9E-39,1.7E+38]。占用内存6个字节(48位)。 实数的表示法有两种:1、直接表示,如:-0.4576, 123.567, -234, 2、科学计数法,如:1.234E-4, -3.546E12 表示1.234乘10的负4次方;-3.546乘10的12次方。 三、字符类型 CHAR:单字符型,即取1个字符,如'A', '1'。 STRING:字符串型,即多个字符,如'ABCD!123','%¥#DS12'。 如果一个常/变量只要用到1个字符,则可把它定义成CHAR型;如果是多个字符,但不知确切多少个,则定义成STRING型,如果知道确切有N个字符,则定义成STRING[N]型,例如STRING[5],则表示定义的这个字符串变量由5个字符组成。字符串在PASCAL中使用都是加上单引号。 四、布尔型 BOOLEAN:布尔型即为逻辑型,取值为TRUE、FALSE, 即真、假。 机器识别的其实是二进制数,就是0和1,一个整型数是16位的二进制位表示的,所以整型数的范围在16 个0和16个1之间 按你给的例子,讨论的是有符号的整型变量,所以16个位中最高位表示符号,即标志这个数是正数还是负数,所以有符号的整型变量的范围就变成了-2^15~+2^15,如你说,0属正数。 无符号的整型变量的范围是0~2^16。 本人眼神不好哈,跑题了,见谅。你的求知精神我敬佩,但是不是我能回答的了,下面是我百度的,希望有帮助吧。 转载请注明出处51数据库 » word类型变量取值范围内二、变量取值范围与存储大小
三、如何确定各种类型变量的取值范围
四、INT变量取值范围
五、变量超出取值范围会怎样
六、integer类型怎么取值范围
七、实型变量的取值范围
最爱沃尔沃