⑦z学院 负数的补码:将该数的绝对值的二进制形式按位取反 后再加1。 例如:求-11的补码: 1的原召: 000004000400040414041+1 取反: 11414141414141414141414o14o|o 再加1,得-11的补码 符号位 1+1411+11+1+1+141+14140 1011 (2)整型的分类 基本型:类型说明符为int,在内存中占2个字节 短整量:类型说明符为 short int或 short。所占字节和取值范 围均与基本型相同。 长整型:类型说明符为 I ong int或long,在内存中占4个字节 返回 C语言程序设计教程
C语言程序设计教程 16 • 负数的补码:将该数的绝对值的二进制形式按位取反 后再加1。 • 例如:求-11的补码: 符号位 (2)整型的分类 基本型:类型说明符为int,在内存中占2个字节。 短整量:类型说明符为short int或short。所占字节和取值范 围均与基本型相同。 长整型:类型说明符为long int或long,在内存中占4个字节
⑦z学院 有符号型:类型说明符为 signed;无符号型:类型说 明符为 uns i gned。 有符号型与无符号型又可与前三种类型匹配而构成: 类型名称 类型说明符 数值范围 字节数 有符号基本型[ signed]int -32768~32767 无符号基本型| uns i gned[int] 0~65535 有符号短整型|[ signed] short[int]-32768~32767 无符号短整型 uns i gned short[int]0~65535 有符号长整型[ signed]long[int] 2147483648~ 2147483647 222244 无符号长整型 uns i gned long[int]|0~4294967295 上面带[]的部分表 C语言程序设计教程 示其内容可以省略
C语言程序设计教程 17 • 有符号型:类型说明符为signed;无符号型:类型说 明符为unsigned。 • 有符号型与无符号型又可与前三种类型匹配而构成: 类型名称 类型说明符 数值范围 字节数 有符号基本型 [signed] int -32768~32767 2 无符号基本型 unsigned [int] 0~65535 2 有符号短整型 [signed] short [int] -32768~32767 2 无符号短整型 unsigned short [int] 0~65535 2 有符号长整型 [signed] long [int] -2147483648~ 2147483647 4 无符号长整型 unsigned long [int] 0~4294967295 4 上面带[ ]的部分表 示其内容可以省略
⑦z学院 (3)整型变量的定义 变量定义的格式为: 类型说明符变量名标识符,变量名标识符,,; 说明:允许在一个类型说明符后,定义多个相同类型的变 量,并使用逗号分割变量名中多个变量,使用分号结 束。类型说明符与变量名之间至少用一个空格间隔。 变量定义必须放在变量使用之前。一般放在函数体的开 头部分。 在程序的同一部分,禁止对同一变量进行重复定义,在 书写不同种类型变量定义时,避免都写在一行上 对所用到的变量必须进行强制定义,即“先定义,后使 用 inta,b,c;/*a,b,C为整型变量* long x, y;/^xy为长整型变量* C语言程序设计教程 18
C语言程序设计教程 18 (3)整型变量的定义 变量定义的格式为: 类型说明符 变量名标识符,变量名标识符,...; 说明:允许在一个类型说明符后,定义多个相同类型的变 量,并使用逗号分割变量名中多个变量,使用分号结 束。类型说明符与变量名之间至少用一个空格间隔。 变量定义必须放在变量使用之前。一般放在函数体的开 头部分。 在程序的同一部分,禁止对同一变量进行重复定义,在 书写不同种类型变量定义时,避免都写在一行上。 对所用到的变量必须进行强制定义,即“先定义,后使 用” 。 int a,b,c; /*a,b,c为整型变量*/ long x,y; /*x,y为长整型变量*/
⑦z学院 例2.3整型变量的定义与使用 inc l ude<std io. h void main o [long a, b intⅹ,sum,ave /*定义整型变量x,sum,ave*/ uns i gned y; /*定义无符号整型变量y*/ 9 x=-10 y=20; b=x+a sum=Xty ave=(x+y)/2 /*不同类型数据间可进行运算* pr intf(b=x+a=%Id, sum=%d, average=%d\n", b, sum, ave) 程序运行结果 b=x+a=-1, sum=12, average=6 C语言程序设计教程
C语言程序设计教程 19 例2.3整型变量的定义与使用 #include<stdio.h> void main() {long a,b; int x,sum,ave; /*定义整型变量x,sum,ave*/ unsigned y; /*定义无符号整型变量y*/ a=9; x=-10; y=20; b=x+a; sum=x+y; ave=(x+y)/2; /*不同类型数据间可进行运算*/ printf("b=x+a=%ld,sum=%d, average= %d\n",b,sum,ave); } 程序运行结果: b=x+a=-1,sum=12,average=6
⑦z学院 (4)整型数据的溢出 每个整型数据都有其自身的数据类型,有其自身所占 存储空间大小,基本整型int定义的变量的最大允许存 储值为32767 例3.4整型数据的溢出 #inc lude<stdio. h> 程序分析: void main o 计算结果-32768与实际应该的 Int x,y; 结果32768相差一个符号,为什么呢? x=32767; 数据在内存中都是以该数的补码的 二进制形式存放的,32767的补码为 y=x+1; 0111111111111后发生 pr intf("%d,%dn",x,y)进位,变成10000 最高位的1占据了符号位,而它正好 程序运行结果: 是-32768的补码形式,所以才有上 32767,-32768 述输出结果。 C语言程序设计教程 D<回
C语言程序设计教程 20 (4)整型数据的溢出 • 每个整型数据都有其自身的数据类型,有其自身所占 存储空间大小,基本整型int定义的变量的最大允许存 储值为32767 例3.4整型数据的溢出 #include<stdio.h> void main() { int x,y; x=32767; y=x+1; printf("%d,%d\n",x,y); } 程序运行结果: 32767,-32768 程序分析: 计算结果-32768与实际应该的 结果32768相差一个符号,为什么呢? 数据在内存中都是以该数的补码的 二进制形式存放的,32767的补码为 0111 1111 1111 1111,加1后发生 进位,变成1000 0000 0000 0000, 最高位的1占据了符号位,而它正好 是-32768的补码形式,所以才有上 述输出结果