文档库 最新最全的文档下载
当前位置:文档库 › ArcGIS字段类型对照

ArcGIS字段类型对照

ArcGIS字段类型对照

ArcGIS 字段类型对照

char类型溢出问题

大家之前肯定都遇到过这样的问题,假如我用char类型的变量num接收大于127的数时,打印num的值发现是-128 这是为什么呢?(此处只讨论整数) 第一点:大家知道char类型的取值范围是-128到127,这是char类型的存储空间限制的。char 类型的变量占1个字节,最高位为符号位,0代表整数,1代表负数。这样char类型最大为(0111 1111)即127.存储范围不再它的取值范围的话会造成溢出。 第二点:数值数据在内存中是以数据的补码形式存放的,比如存放一个正整数127,由于正数的补码就是源码,所以存放在内存中即为0111 1111.而如果要存放一个负数-2,系统会首先得到该负数的补码(取绝对值后取反,再加1)即1111 1110,再保存存储起来。读取的时候执行相反操作。 第三点:char类型的变量在使用时系统会将其扩展为int类型,高24位补符号位。变量的正负通过扩展的24位决定,1代表负数,0代表整数。 跟据以上三点, 我们可以分析char num = 128,系统是如何操作的: 128是一个正数,所以它的补码也是它本身1000 0000,赋值给num后,num代表的存储空间中存储的就是1000 0000. 我们再分析printf(“%d\n”, num); 使用num变量时系统首先会根据符号位将num扩展为32位,由于现在符号位为1,所以扩展后为1111 1111 1111 1111 1111 1111 1000 0000.系统认为这是一个负数的补码,所以再得到将其减1取反(这里操作的是低8位)得到1000 0000为128,通过扩展的24位,系统认为这是一个负数,所以最终打印出来的结果是-128.

Java程序设计B-复习范围-(已解答)-

Java程序设计B 复习提纲红皮教材 灰色----不会 红色----做的答案 第1章 内容: 1) Java语言的特点JA V A语言具有简单、面向对象、可移植、分布性、解释器通用性、稳健、多线程和同步机制、安全等语言特性。 2)简述采用MyEclipse 开发Java项目,可视化项目,appplet, jsp项目等的过程 JA V A项目: P11-14 可视化项目: 配置SWING插件--新建JA V A项目—其他—swing—JFRAME--拖入组件—编程—运行 Applet: 新建JA V A项目--新建Japplet—编写HTML页面文件—运行 jsp: 新建Web项目–新建JSP—编程—运行TOMCAT 3)简述什么是JVM(java virtual machine)java虚拟机和JDK(java development kit)java开发工具包,简述JDK1.5的安装和配置过程P5-7,以及举例说明采用JDK开发、编译和执行Java 程序的过程和相关命令。 举例HelloWorld编译执行: 1.用记事本编写代码如下,保存为HelloWorld.java,文件名不与public class的类名一致 public class Hello World{ public static void main(String[] args){ System.out.println(―Hello World!‖); } } 2.编译:用命令行进入存放HelloWorld.java文件夹下,执行javac。 3.执行:java命令+类名,如java HelloWorld。 4)简述Java 可执行类文件的结构, 包含部分,类头,主函数等 书写一个能输出你的姓名与专业的可执行的Java程序 public class test{ private String name="冯予沁"; private String major="物工"; public static void main(String[] args){ System.out.println("姓名:"+name); System.out.println(―专业:"+major); } } 1-1 JA V ASE 、JA V AEE 、JA V AME 1-2 首先编写其扩展名为“JA V A”的JA V A源文件,其次将其编译为扩展名为“class”的类文件,最后通过“java,oneJavaApp”来运行java程序 1-2 P7-8 1-5 P6-7

Java 基本数据类型取值范围讲解

Java 基本数据类型取值范围讲解 一、Java的类型词语理解: 1) 原始数据类型,简单类型,基本类型都是一个含义; 2)复合类型,扩展类型,复杂类型、引用类型都是一个含义; 3)浮点类型,实数、实型都是一个含义; 4)逻辑型、布尔型都是一个含义; 5)本人个人认同的类型分类: 阅读时需要理解: 定点:定点的意思是把小数点定在末尾,小数点后没有数字的数据,Java中通常把它们称为整数; 常量:就是直接的值; 变量:放置常量的容器,除了放置常量之外,也可以给变量一个运算式,变量中的值是可变的; 二、Java数据类型基本概念: 数据类型在计算机语言里面,是对内存位置的一个抽象表达方式,可以理解为针对内存的一种抽象的表达方式。接触每种语言的时候,都会存在数据类型的认识,有复杂的、简单的,各种数据类型都需要在学习初期去了解,Java是强类型语言,所以Java对于数据类型的规范会相对严格。数据类型是语言的抽象

原子概念,可以说是语言中最基本的单元定义,在Java里面,本质上讲将数据类型分为两种:基本类型和引用数据类型。 基本类型:简单数据类型是不能简化的、内置的数据类型、由编程语言本身定义,它表示了真实的数字、字符和整数。 引用数据类型:Java语言本身不支持C++中的结构(struct)或联合(union)数据类型,它的复合数据类型一般都是通过类或接口进行构造,类提供了捆绑数据和方法的方式,同时可以针对程序外部进行信息隐藏。 三、Java中的数据类型与内存的关系 在Java中,每个存放数据的变量都是有类型的,如: char ch;float x;inta,b,c; ch是字符型的,就会分配到2个字节内存。不同类型的变量在内存中分配的字节数不同,同时存储方式也 是不同的。 所以给变量赋值前需要先确定变量的类型,确定了变量的类型,即确定了数据需分配内存空间的大小,数 据在内存的存储方式。 四、Java数据类型在内存中的存储: 1)基本数据类型的存储原理:所有的简单数据类型不存在“引用”的概念,基本数据类型都是直接存储在内 存中的内存栈上的,数据本身的值就是存储在栈空间里面,而Java语言里面八种数据类型是这种存储模型; 2)引用类型的存储原理:引用类型继承于Object类(也是引用类型)都是按照Java里面存储对象的内存 模型来进行数据存储的,使用Java内存堆和内存栈来进行这种类型的数据存储,简单地讲,“引用”是存储 在有序的内存栈上的,而对象本身的值存储在内存堆上的; 区别:基本数据类型和引用类型的区别主要在于基本数据类型是分配在栈上的,而引用类型是分配在堆上的(需要java中的栈、堆概念), 基本类型和引用类型的内存模型本质上是不一样的。 例1:我们分析一下”==“和equals()的区别。 首先,我定以两个String对象 String a="abc";

各种数据类型字节数 取值范围

源代码 #include #include #include int main() { printf ("Data type Number of bytes Min value Max value\n"); printf ("-------------------------------------------------------------------------------------------------\n"); printf ("char %d %d %d\n",sizeof(char),CHAR_MIN,CHAR_MAX); printf ("int %d %d %d\n",sizeof(int),INT_MIN,INT_MAX); printf ("short int %d %d %d\n",sizeof(short),SHRT_MIN,SHRT_MAX); printf ("long int %d %d %d\n",sizeof(long),LONG_MIN,LONG_MAX); printf ("float %d %e %e\n",sizeof(float),FLT_MIN,FLT_MAX); printf ("double %d %e %e\n",sizeof(double),DBL_MIN,DBL_MAX); printf ("long long %d %lld %lld\n",sizeof(long long),LLONG_MIN,LLONG_MAX); printf ("unsigned long %d %u %u\n",sizeof(unsigned long),ULONG_MAX+1,ULONG_MAX); printf ("unsigned short %d %d %d\n",sizeof(unsigned short),0,USHRT_MAX); printf ("unsigned char %d %d %d\n",sizeof(unsigned char),0,UCHAR_MAX); printf ("unsigned int %d %d %u\n",sizeof(unsigned int),0,UINT_MAX); return 0; }

C语言程序设计(数据与数据类型)

2.1数据与数据类型 2.1.1 数据和数据类型 数据是程序加工、处理的对象,也是加工、处理的结果,所以数据是程序设计中所要涉及和描述的主要内容。程序所能处理的基本数据对象被划分成一些组,或说是一些集合。属于同一集合的各数据对象都具有同样的性质,程序设计语言中具有这样性质的数据集合称为数据类型。 所有数据都属于某种类型。一个数据的类型决定了这个数据在内存的存储形式、取值范围和能够对它进行的操作。 C/C++中的数据类型大致可以分为两大类:第一类是基本数据类型,基本数据类型是系统预定义的类型,包括整型、浮点型(实型)和字符型;第二类是非基本数据类型,即自定义数据类型,包括数组、结构体、共用体、枚举类型和指针类型。本章介绍几种基本数据类型,其它数据类型将在以后各章陆续介绍。下面给出这些数据类型(图2-1)。 2.1.2C 语言的基本数据类型 基本数据类型是基元,所有的数据类型都建立在基本类型之上。C/C++语言的基本数据类型有以下几个: int 整型char 字符型float 单精度浮点型double 双精度浮点型 long double 长双精度浮点型 另外,在基本数据类型基础上附加一些限定词,得到扩充的数据类型。short,long 数据类型 基本类型 自定义类型 整型 实型 字符型 单精度 数组类型结构体类型 共用体类型枚举型指针类型 双精度 图2-1数据类型

可以应用到整型,unsigned可以应用到整型和字符型: short int(或short)短整型 long int(或long)长整型 unsigned int无符号整型 unsigned short无符号短整型 unsigned long无符号长整型 unsigned char无符号字符型 1.整型 数据的取值范围服从数学式子2n,其中n是这种类型所占内存位数,例如,如果int 型是16位,它的数据取值范围在-2n~2n-1,即-32768~32767之间。无符号的数总是正数或零,而unsigned int型数据取值范围在0~2n+1-1,即0~65535之间。 ANSI C标准没有规定以上各类数据所占内存位数,只要求short型数据不长于int型,而long型不短于int型,具体如何实现,由各编译系统决定。表2-1列出了ANSI C标准定义的整型数据的最小取值范围。 表2-1数据类型最小取值范围 数据类型所占位数最小取值范围 Int16-32768~32767 Short16-32768~32767 Long32-21亿~21亿 Unsigned int160~65535 Unsigned short160~65535 Unsigned long320~42亿 2.浮点数据类型 浮点型数据也称为实数,可以是数字0.0和包含小数点的正数或负数。 C语言支持三种浮点数据类型:浮点型也称单精度型(float)、双精度型(double)和长双精度型(long double)。这些数据类型之间的差别是编译器为每种类型分配的存储数量。一般情况下,为双精度浮点数采用的存储数量是浮点数采用的数量的两倍,这使双精度浮点数的精度大约是浮点数的两倍。使用sizeof(类型)可以显示你的编译器为每种数据类型提供的存储数量(字节数)。 当前的C编译器所提供的float型在内存中占用4个字节(32位),提供7位有效数字,可能的取值范围在-10-38~1038;double型数据占8个字节,提供15~16位有效数据,可能的取值约-10-308~10308。浮点型数据的存储符合IEEE浮点数格式,如float型数据,1位用于符号,8位用于指数,23位用于基数。 3.字符型 字符型数据用于存储单个的字符,存储时占用8位,它实际存储的是字符对应的ASCII 码(Americal Standard Code for Information Interchange美国标准信息交换码)。如一个char型数据’A’,其ASCII码为65,故实际存储的内容是65。char型数据取值范围为-128~127,unsigued char型数据取值范围为0~255。字符有符号或无符号是依赖于机

C语言各种数据类型在系统中占的字节和取值范围

C语言各种数据类型在系统中占的字节和取值范围 2011-12-28 19:34 基本类型包括字节型(char)、整型(int)和浮点型(float/double)。 定义基本类型变量时,可以使用符号属性signed、unsigned(对于char、int),和长度属性short、long(对于int、double)对变量的取值区间和精度进行说明。 下面列举了Dev-C++下基本类型所占位数和取值范围: 符号属性长度属性基本型所占位数取值范围输入符举例输出符举例 -- -- char 8 -2^7-2^7-1 %c %c、%d、%u signed -- char 8 -2^7-2^7-1 %c %c、%d、%u unsigned -- char 8 0-2^8-1 %c %c、%d、%u [signed] short [int] 16 -2^15 ~ 2^15-1 %hd unsigned short [int] 16 0~2^16-1 %hu、%ho、%hx [signed] -- int 32 -2^31 ~ 2^31-1 %d unsigned -- [int] 32 0 ~ 2^32-1 %u、%o、%x [signed] long [int] 32 -2^31 ~ 2^31-1 %ld unsigned long [int] 32 0~2^32-1 %lu、%lo、%lx [signed] long long[int] 64 -2^63 ~ 2^63-1 %I64d unsigned long long[int] 64 0~2^64-1 ~2^64-1 %I64u、%I64o、%I64x -- -- float 32 +/- 3.40282e+038 %f、%e、%g -- -- double 64 +/-1.79769e+308 %lf、%le、%lg %f、%e、%g

C语言数据类型及表示范围

C语言各种数据类型在系统中占的字节和取值围 基本类型包括字节型(char)、整型(int)和浮点型(float/double)。 定义基本类型变量时,可以使用符号属性signed、unsigned(对于char、int),和长度属性short、long(对于int、double)对变量的取值区间和精度进行说明。 下面列举了Dev-C++下基本类型所占位数和取值围: 符号属性长度属性基本型所占位数取值围输入符举例输出符举例-- -- char 8 -2^7 ~ 2^7-1 %c %c、%d、%u signed -- char 8 -2^7 ~ 2^7-1 %c %c、%d、%u unsigned -- char 8 0 ~ 2^8-1 %c %c、%d、%u [signed] short [int] 16 -2^15 ~ 2^15-1 %hd unsigned short [int] 16 0 ~ 2^16-1 %hu、%ho、%hx [signed] -- int 32 -2^31 ~ 2^31-1 %d unsigned -- [int] 32 0 ~ 2^32-1 %u、%o、%x [signed] long [int] 32 -2^31 ~ 2^31-1 %ld unsigned long [int] 32 0 ~ 2^32-1 %lu、%lo、%lx [signed] long long [int] 64 -2^63 ~ 2^63-1 %I64d unsigned long long [int] 64 0 ~ 2^64-1 %I64u、%I64o、%I64x -- -- float 32 +/- 3.40282e+038 %f、%e、%g -- -- double 64 +/- 1.79769e+308 %lf、%le、%lg %f、%e、%g -- long double 96 +/- 1.79769e+308 %Lf、%Le、%Lg 几点说明: 1. 注意! 表中的每一行,代表一种基本类型。“[]”代表可省略。 例如:char、signed char、unsigned char是三种互不相同的类型; int、short、long也是三种互不相同的类型。可以使用C++的函数重载特性进行验证,如: void Func(char ch) {} void Func(signed char ch) {} void Func(unsigned char ch) {} 是三个不同的函数。

基本类型的输出格式

基本类型包括字节型(char)、整型(int)和浮点型(float/double)。 定义基本类型变量时,可以使用符号属性signed、unsigned(对于char、int),和长度属性short、long(对 于int、double)对变量的取值区间和精度进行说明。 下面列举了Dev-C++下基本类型所占位数和取值范围: 符号属性长度属性基本型所占位数取值范围输入符举例输出符举例 -- -- char 8 -2^7 ~ 2^7-1 %c %c、%d、%u signed -- char 8 -2^7 ~ 2^7-1 %c %c、%d、%u unsigned -- char 8 0 ~ 2^8-1 %c %c、%d、%u [signed] short [int] 16 -2^15 ~ 2^15-1 %hd unsigned short [int] 16 0 ~ 2^16-1 %hu、%ho、%hx [signed] -- int 32 -2^31 ~ 2^31-1 %d unsigned -- [int] 32 0 ~ 2^32-1 %u、%o、%x [signed] long [int] 32 -2^31 ~ 2^31-1 %ld unsigned long [int] 32 0 ~ 2^32-1 %lu、%lo、%lx [signed] long long [int] 64 -2^63 ~ 2^63-1 %I64d unsigned long long [int] 64 0 ~ 2^64-1 %I64u、%I64o、%I64x

-- -- float 32 +/- 3.40282e+038 %f、%e、%g -- -- double 64 +/- 1.79769e+308 %lf、%le、%lg %f、%e、%g -- long double 96 +/- 1.79769e+308 %Lf、%Le、%Lg 几点说明: 1. 注意! 表中的每一行,代表一种基本类型。“[]”代表可省略。 例如:char、signed char、unsigned char是三种互不相同的类型; int、short、long也是三种互不相同的类型。 可以使用C++的函数重载特性进行验证,如: void Func(char ch) {} void Func(signed char ch) {} void Func(unsigned char ch) {} 是三个不同的函数。 2. char/signed char/unsigned char型数据长度为1字节; char为有符号型,但与signed char是不同的类型。 注意! 并不是所有编译器都这样处理,char型数据长度不一定为1字节,char 也不一定为有符号型。 3. 将char/signed char转换为int时,会对最高符号位1进行扩展,从而造成运算问题。 所以,如果要处理的数据中存在字节值大于127的情况,使用unsigned char 较为妥当。 程序中若涉及位运算,也应该使用unsigned型变量。 4. char/signed char/unsigned char输出时,使用格式符%c(按字符方式);或使用%d、%u、%x/%X、%o,按整数方式输出; 输入时,应使用%c,若使用整数方式,Dev-C++会给出警告,不建议这样使用。 5. int的长度,是16位还是32位,与编译器字长有关。 16位编译器(如TC使用的编译器)下,int为16位;32位编译器(如VC 使用的编译器cl.exe)下,int为32

C语言数据类型及取值范围

C语言数据类型及取值范围 速查表: char -128 ~ +127 (1 Byte) short -32767 ~ + 32768 (2 Bytes) unsigned short 0 ~ 65535(2 Bytes) int -2147483648 ~ +2147483647 (4 Bytes) unsigned int 0 ~ 4294967295 (4 Bytes) long == int long long -9223372036854775808 ~ +9223372036854775807 (8 Bytes) double 1.7 * 10^308 (8 Bytes) unsigned int 0~4294967295 long long的最大值:9223372036854775807 long long的最小值:-9223372036854775808 unsigned long long的最大值:1844674407370955161 __int64的最大值:9223372036854775807 __int64的最小值:-9223372036854775808 unsigned __int64的最大值:18446744073709551615 符号属性长度属性基本型所占位数取值范围输入符举例输出符举例-- -- char 8 -2^7 ~ 2^7-1 %c %c 、 %d 、 %u signed -- char 8 -2^7 ~ 2^7-1 %c %c 、 %d 、 %u unsigned -- char 8 0 ~ 2^8-1 %c %c 、 %d 、 %u [signed] short [int] 16 -2^15 ~ 2^15-1 %hd unsigned short [int] 16 0 ~ 2^16-1 %hu 、 %ho 、 %hx [signed] -- int 32 -2^31 ~ 2^31-1 %d unsigned -- [int] 32 0 ~ 2^32-1 %u 、 %o 、 %x [signed] long [int] 32 -2^31 ~ 2^31-1 %ld unsigned long [int] 32 0 ~ 2^32-1 %lu 、 %lo 、 %lx [signed] long long [int] 64 -2^63 ~ 2^63-1 %I64d unsigned long long [int] 64 0 ~ 2^64-1 %lld,%llx -- -- float 2e+32 +/- 3.4028038 %f 、 %e 、 %g -- -- double 64 +/- 1.79769e+308 %lf 、 %le 、 %lg %f 、 %e 、 %g -- long double 96 +/- 1.79769e+308 %Lf 、 %Le 、 %Lg 几点说明: 1. 注意 ! 表中的每一行,代表一种基本类型。“[]”代表可省略。 例如: char 、 signed char 、 unsigned char 是三种互不相同的类型; int 、 short 、 long 也是三种互不相同的类型。

char,short ,int ,long,long long,unsigned long long数据范围

char,short ,int ,long,long long,unsigned long long数据范围 速查表: char -128 ~ +127 (1 Byte) short -32767 ~ + 32768 (2 Bytes) unsigned short 0 ~ 65535 (2 Bytes) int -2147483648 ~ +2147483647 (4 Bytes) unsigned int 0 ~ 4294967295 (4 Bytes) long == int long long -9223372036854775808 ~ +9223372036854775807 (8 Bytes) double 1.7 * 10^308 (8 Bytes) unsigned int 0~4294967295 long long的最大值:9223372036854775807 long long的最小值:-9223372036854775808 unsigned long long的最大值:18446744073709551615 __int64的最大值:9223372036854775807 __int64的最小值:-9223372036854775808 unsigned __int64的最大值:18446744073709551615 详细教程: ==================== 符号属性长度属性基本型所占位数取值范围输入符举例输出符举例 -- -- char 8 -2^7 ~ 2^7-1 %c %c 、 %d 、 %u signed -- char 8 -2^7 ~ 2^7-1 %c %c 、 %d 、 %u unsigned -- char 8 0 ~ 2^8-1 %c %c 、 %d 、 %u [signed] short [int] 16 -2^15 ~ 2^15-1 %hd unsigned short [int] 16 0 ~ 2^16-1 %hu 、 %ho 、 %hx [signed] -- int 32 -2^31 ~ 2^31-1 %d unsigned -- [int] 32 0 ~ 2^32-1 %u 、 %o 、 %x [signed] long [int] 32 -2^31 ~ 2^31-1 %ld unsigned long [int] 32 0 ~ 2^32-1 %lu 、 %lo 、 %lx [signed] long long [int] 64 -2^63 ~ 2^63-1 %I64d unsigned long long [int] 64 0 ~ 2^64-1 %I64u 、 %I64o 、 %I64x -- -- float 32 +/- 3.40282e+038 %f 、 %e 、 %g -- -- double 64 +/- 1.79769e+308 %lf 、 %le 、 %lg %f 、 %e 、 %g -- long double 96 +/- 1.79769e+308 %Lf 、 %Le 、 %Lg

c程序设计第三版习题参考解答(全)

C程序设计(第三版)课后习题参考解答 第1章C语言概述 1.5 参照本章例题,编写一个C程序,输出以下信息: ****************************** Very Good! ****************************** 解: main ( ) {printf(“****************************** \n”); printf(“\n”); printf(“Very Good! \n”); printf(“\n”); printf(“****************************** \n”); } 1.6 写一个程序,输入a,b,c三个值,输出其中最大者。 解: main ( ) {int a,b,c,max; printf(“请输入三个数a,b,c: \n”); scanf(“%d,%d,%d”,&a,&b,&c); max=a; if (max

C数据类型表示范围

2、对于字符型和整形特别需要注意其表示的范围,如果运算导致超出其范围的 处理,如以下的代码: 1.int main() 2.{ 3. signed char ch = 127; 4. ch += 1; 5. printf("%d\n", ch); 6. 7. return 0; 8.} 输出结果为:-128,注意,定义ch时赋予的值为127,已经是char能表示的最大数,其最终结果-128的来历是这样的: 第一步:首先127在计算机中用二进制表示为:01111111; 第二步:01111111 + 00000001 = 10000000; 第三步:由于ch是带符号的,当最高位为1时,表示是负数,而负数的计算机中是利用补码来存储的,回忆计算负数补码的方法(首先取负数的绝对值,然后求二进制,对二进制取反,在对取反后的值加1,即为负数的补码);

第四步:于是根据求补码的反步骤,我们来求最原始的负数,由于本题中补码为10000000,首先10000000 - 00000001 = 01111111,然后对01111111取反为10000000,10000000 = 128,由于本身是负数,即ch为-128. 再看以下一段代码: 1.int main() 2.{ 3. unsigned char ch = 255; 4. ch += 1; 5. printf("%d\n", ch); 6. 7. return 0; 8.} 输出结果为:0; 其分析为:首先ch = 255提升为整形,在计算机的存储为:(000 (11111111) 然后(000....)11111111+1 = (000...)0001 00000000;然后再将最后的八位二进制截取给ch,由于最后八位全是0,因此ch = 0了。 同理:对于遇到整形int short, long等出现上述情况时,我们也可以这样分析得到结果。

相关文档
相关文档 最新文档