《C语言相关知识.ppt》由会员分享,可在线阅读,更多相关《C语言相关知识.ppt(46页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第3章章 数据类型、运算符与表达式数据类型、运算符与表达式 程序是解决某种问题的一组指令的有序集合。著名计算机科学家沃思(Nikiklaus Wirth)提出一个公式:程序=数据结构+算法 程序是什么?程序是什么?对数据的描述。对数据的描述。对数据的描述。对数据的描述。在在在在C C C C语言中,体语言中,体语言中,体语言中,体现为现为现为现为数据类型数据类型数据类型数据类型的的的的描述!描述!描述!描述!对数据处理的描述。对数据处理的描述。对数据处理的描述。对数据处理的描述。是为解决一个问题而是为解决一个问题而是为解决一个问题而是为解决一个问题而采取的方法和步骤,采取的方法和步骤,采取的
2、方法和步骤,采取的方法和步骤,是程序的灵魂!是程序的灵魂!是程序的灵魂!是程序的灵魂!结论:学好结论:学好C C语言首先语言首先就必须十分了解就必须十分了解C C语言语言的数据类型、运算符的数据类型、运算符与表达式。与表达式。3.1 C语言数据类型C C C C数数数数据据据据类类类类型型型型基本类型基本类型基本类型基本类型构造类型构造类型构造类型构造类型指针类型指针类型指针类型指针类型空类型空类型空类型空类型voidvoid定义类型定义类型定义类型定义类型typedeftypedef字符类型字符类型字符类型字符类型charchar枚举类型枚举类型枚举类型枚举类型enumenum整整整整 型型
3、型型实型实型实型实型单精度型单精度型单精度型单精度型floatfloat双精度型双精度型双精度型双精度型doubledouble数组数组数组数组结构体结构体结构体结构体structstruct共用体共用体共用体共用体unionunion短整型短整型短整型短整型shortshort长整型长整型长整型长整型longlong整型整型整型整型intint数据类型决定:数据类型决定:1.1.数据占内存字节数数据占内存字节数2.2.数据取值范围数据取值范围3.3.其上可进行的操作其上可进行的操作本章所介绍本章所介绍本章所介绍本章所介绍的数据类型的数据类型的数据类型的数据类型3.2 常量、变量和标识符1.标
4、识符定义:定义:用来标识变量、常量、函数等的字符序列用来标识变量、常量、函数等的字符序列组成组成:只能由只能由字母字母、数字数字、下划线下划线组成,且第一个字母必须是字母或组成,且第一个字母必须是字母或下划线下划线C C语言的关键字不能用作变量名语言的关键字不能用作变量名 大小写敏感大小写敏感长度长度:有效长度为:有效长度为3232个字符。随系统而异,但至少前个字符。随系统而异,但至少前8 8个字符有效个字符有效命名原则:命名原则:变量名和函数名中的英文字母一般用小写,以增加可读性变量名和函数名中的英文字母一般用小写,以增加可读性 见名知意见名知意不宜混淆不宜混淆 如如l l与与I,oI,o与
5、与0 0 在在在在TC2.0TC2.0TC2.0TC2.0及及及及BC3.1BC3.1BC3.1BC3.1中,变量名(标中,变量名(标中,变量名(标中,变量名(标识符)的有效长度为个字符,识符)的有效长度为个字符,识符)的有效长度为个字符,识符)的有效长度为个字符,缺省值为,但在缺省值为,但在缺省值为,但在缺省值为,但在VCVCVCVC中其长度可达中其长度可达中其长度可达中其长度可达到到到到255 255 255 255 例:判断下列标识符号合法性sum Sum M.D.John day Date 3days student_name#33 lotus_1_2_3 char ab _above
6、$1233days#33char$123ab .字符非法字符非法字符非法字符非法 数字数字数字数字3 3 3 3不可作首字符不可作首字符不可作首字符不可作首字符#字符非法字符非法字符非法字符非法 charcharcharchar是关键字是关键字是关键字是关键字 字符非法字符非法字符非法字符非法$不可作首字符不可作首字符不可作首字符不可作首字符3.2 常量、变量和标识符2.常量定义:程序运行时其值不能改变的量(即常数)常量的分类:直接常量直接常量(值常量值常量)整型常量整型常量:10、15、-10、-30 实型常量实型常量:12.5、30.0、-1.5 字符常量字符常量:A、b、c 字符串常量字
7、符串常量:“sum”、“A”、“123”符号常量符号常量 用标识符来代表常量。用标识符来代表常量。其定义格式为:其定义格式为:#define define define define 符号常量符号常量符号常量符号常量 常量常量常量常量#define NUM 20#define PI 3.1415926#include#include#define PRICE 30#define PRICE 30void main()void main()int num,total;int num,total;num=10;num=10;total=num*total=num*PRICEPRICE;printf
8、(total=%d,total);printf(total=%d,total);运行结果:运行结果:total=300 行尾不能有分号行尾不能有分号行尾不能有分号行尾不能有分号 definedefinedefinedefine前面一定要有前面一定要有前面一定要有前面一定要有#符号常量名最好使用大写符号常量名最好使用大写符号常量名最好使用大写符号常量名最好使用大写 符号常量名最好有意义符号常量名最好有意义符号常量名最好有意义符号常量名最好有意义 3.2 常量、变量和标识符3.变量定义:程序运行时其值可以被改变的量 变量的两要素:变量名、变量值变量的定义格式:变量的初始化:定义时赋初始值变量的使用
9、:先定义,后赋值变量定义位置:一般放在函数开头 存储类型存储类型存储类型存储类型 数据类型数据类型数据类型数据类型 变量名变量名变量名变量名1111,变量名,变量名,变量名,变量名2 2 2 2,变量名,变量名,变量名,变量名nnnn;int x,y,z;float radius,length,area;char ch;决定分配字节数和数的表示范围合法标识符例:int a=2,b,c=4;float data=3.67;char ch=A;int x=1,y=1,z=1;int x=y=z=1;编译程序根据变量定义为其分配指定字节的内存单元地址short int a=1,b=-3,c;abc2
10、字节2字节2字节地址地址内存.1-3随机数例1:int student;stadent=19;/Undefined symbol statent in function main 例2:float a,b,c;c=a%b;/Illegal use of floating point in function main void main()int a,b=2;float data;a=1;data=(a+b)*1.2;printf(“data=%fn”,data);变量定义可执行语句void main()int a,b=2;a=1;float data;data=(a+b)*1.2;printf
11、(“data=%fn”,data);3.3 简单数据类型与表示范围1.整型数据整型数据 整型常量整型常量整型常量整型常量 l l 十进制整数:十进制整数:十进制整数:十进制整数:由数字由数字由数字由数字0 0 0 09 9 9 9和正负号表示和正负号表示和正负号表示和正负号表示.如如如如:123,-456,0:123,-456,0:123,-456,0:123,-456,0l l八进制整数:由数字八进制整数:由数字八进制整数:由数字八进制整数:由数字0 0 0 0开头,后跟数字开头,后跟数字开头,后跟数字开头,后跟数字0 0 0 07 7 7 7表示表示表示表示.如如如如:0123,011:0
12、123,011:0123,011:0123,011l l十六进制整数:由十六进制整数:由十六进制整数:由十六进制整数:由0 x0 x0 x0 x或或或或0X0X0X0X开头开头开头开头,后跟后跟后跟后跟0 0 0 09,a9,a9,a9,af,Af,Af,Af,AF F F F表示表示表示表示.如如如如0 x123,0Xff 0 x123,0Xff 0 x123,0Xff 0 x123,0Xff 定义整数的符号常量定义整数的符号常量#define NUM1 20 /#define NUM1 20 /十进制数十进制数2020#define NUM2 020 /#define NUM2 020 /
13、八进制数(十进制八进制数(十进制1616)#define NUM3 0 x2a /#define NUM3 0 x2a /十六进制数(十进制十六进制数(十进制4242)思考题:下列整型常量哪些是非法的?思考题:下列整型常量哪些是非法的?012 012,oX7AoX7A,0000,078078,0 x5Ac0 x5Ac,-0 xFFFF-0 xFFFF,00340034,7B7B。首字符不能首字符不能是字母是字母o o 八进制数中不八进制数中不能有数字能有数字8 8 十进制数中不十进制数中不能有字母能有字母B B 2.整数在内存中的表示整数在内存中的表示 整数的数值在内存中用补码的形式存放。整数
14、的数值在内存中用补码的形式存放。整数的数值在内存中用补码的形式存放。整数的数值在内存中用补码的形式存放。求一个整数补码的方法:求一个整数补码的方法:求一个整数补码的方法:求一个整数补码的方法:(假设用(假设用(假设用(假设用n n n n个二进制位的内存单个二进制位的内存单个二进制位的内存单个二进制位的内存单元来存储它)元来存储它)元来存储它)元来存储它)如果是正整数如果是正整数如果是正整数如果是正整数,采用符号,采用符号,采用符号,采用符号-绝对值表示,即最高有效位绝对值表示,即最高有效位绝对值表示,即最高有效位绝对值表示,即最高有效位(符号位)为(符号位)为(符号位)为(符号位)为0 0
15、0 0表示正,数的其余部分则表示数的绝对值;表示正,数的其余部分则表示数的绝对值;表示正,数的其余部分则表示数的绝对值;表示正,数的其余部分则表示数的绝对值;如果是负整数如果是负整数如果是负整数如果是负整数,则先写出与该负数相对应的正数的补码,则先写出与该负数相对应的正数的补码,则先写出与该负数相对应的正数的补码,则先写出与该负数相对应的正数的补码表示,然后将其按位求反,最后在末位(最低位)加表示,然后将其按位求反,最后在末位(最低位)加表示,然后将其按位求反,最后在末位(最低位)加表示,然后将其按位求反,最后在末位(最低位)加1 1 1 1;然后将上述求得的补码的低然后将上述求得的补码的低然
16、后将上述求得的补码的低然后将上述求得的补码的低n n n n位存放于内存单元之中,就位存放于内存单元之中,就位存放于内存单元之中,就位存放于内存单元之中,就得到了该整数在内存中的表示,内存单元的最高位是符号得到了该整数在内存中的表示,内存单元的最高位是符号得到了该整数在内存中的表示,内存单元的最高位是符号得到了该整数在内存中的表示,内存单元的最高位是符号位(位(位(位(0 0 0 0表示正,表示正,表示正,表示正,1 1 1 1表示负)。表示负)。表示负)。表示负)。在在在在TC2.0TC2.0TC2.0TC2.0或或或或BC3.1BC3.1BC3.1BC3.1下,一个整数默认情况下需要下,一
17、个整数默认情况下需要下,一个整数默认情况下需要下,一个整数默认情况下需要2 2 2 2个字节(个字节(个字节(个字节(16161616位)的内存单元存放;而在位)的内存单元存放;而在位)的内存单元存放;而在位)的内存单元存放;而在VC6.0VC6.0VC6.0VC6.0下下下下,则则则则需要需要需要需要4 4 4 4个字节(个字节(个字节(个字节(32323232位)。位)。位)。位)。2.整数在内存中的表示整数在内存中的表示十进制整数十进制整数十进制整数十进制整数 14:14:对于对于对于对于16161616位的内存单元位的内存单元位的内存单元位的内存单元:符号位符号位符号位符号位(表示正表
18、示正表示正表示正)0000111000000000低字节低字节高字节高字节低地址低地址高地址高地址符号位符号位十进制数十进制数+14+14两个字节的内存实际存放形式两个字节的内存实际存放形式(+14)(+14)补补补补=0 0000 0000 0000 1110000 0000 0000 1110 2.整数在内存中的表示整数在内存中的表示十进制整数十进制整数十进制整数十进制整数 14:14:对于对于对于对于32323232位的内存单元位的内存单元位的内存单元位的内存单元:符号位符号位符号位符号位(表示正表示正表示正表示正)低字节低字节高字节高字节低地址低地址高地址高地址十进制数十进制数+14+
19、14四个字节的内存实际存放形式四个字节的内存实际存放形式(+14)(+14)补补补补=0 0000 0000 0000 0000 0000 0000 0000 1110000 0000 0000 0000 0000 0000 0000 1110 00001110000000000000000000000000符号位符号位记住:记住:记住:记住:数据在内存中的存放位置是高字节放在高地址数据在内存中的存放位置是高字节放在高地址的存储单元中,低字节放在低地址的存储单元中的存储单元中,低字节放在低地址的存储单元中。2.整数在内存中的表示整数在内存中的表示十进制整数十进制整数十进制整数十进制整数 14:
20、14:对于对于对于对于16161616位的内存单元位的内存单元位的内存单元位的内存单元:符号位符号位符号位符号位(表示负表示负表示负表示负)1111001011111111低字节低字节高字节高字节低地址低地址高地址高地址符号位符号位十进制数十进制数-14-14两个字节的内存实际存放形式两个字节的内存实际存放形式(+14)(+14)补补补补=0 0000 0000 0000 1110000 0000 0000 1110(-14)(-14)补补补补=1 1111 1111 1111 0010111 1111 1111 0010 按位求反,末位加按位求反,末位加按位求反,末位加按位求反,末位加1 1
21、 1 1 2.整数在内存中的表示整数在内存中的表示十进制整数十进制整数十进制整数十进制整数 14:14:对于对于对于对于32323232位的内存单元位的内存单元位的内存单元位的内存单元:符号位符号位符号位符号位(表示负表示负表示负表示负)低字节低字节高字节高字节低地址低地址高地址高地址十进制数十进制数-14-14四个字节的内存实际存放形式四个字节的内存实际存放形式(+14)(+14)补补补补=0 0000 0000 0000 0000 0000 0000 0000 1110000 0000 0000 0000 0000 0000 0000 1110 1111001011111111111111
22、1111111111符号位符号位(-14)(-14)补补补补=1 1111 1111 1111 1111 1111 1111 1111 0010111 1111 1111 1111 1111 1111 1111 0010 按位求反,末位加按位求反,末位加按位求反,末位加按位求反,末位加1 1 1 1 2.整数在内存中的表示整数在内存中的表示十进制整数十进制整数十进制整数十进制整数 65537:65537:对于对于对于对于16161616位的内存单元位的内存单元位的内存单元位的内存单元:符号位符号位符号位符号位(表示负表示负表示负表示负)(+65537)(+65537)补补补补=0 01 000
23、0 0000 0000 00011 0000 0000 0000 0001(-65537)(-65537)补补补补=1 10 1111 1111 1111 11110 1111 1111 1111 1111 按位求反,末位加按位求反,末位加按位求反,末位加按位求反,末位加1 1 1 1 1111111111111111低地址低地址高地址高地址十进制数十进制数-65537-65537两个字节的内存实际存放形式两个字节的内存实际存放形式 低字节低字节高字节高字节符号位符号位取取取取低低低低16161616位位位位真值为:真值为:真值为:真值为:-1,-1,-1,-1,不是不是不是不是-65537!
24、-65537!-65537!-65537!2.整数在内存中的表示整数在内存中的表示十进制整数十进制整数十进制整数十进制整数 65537:65537:对于对于对于对于32323232位的内存单元位的内存单元位的内存单元位的内存单元:符号位符号位符号位符号位(表示负表示负表示负表示负)低字节低字节高字节高字节低地址低地址高地址高地址十进制数十进制数-65537-65537四个字节的内存实际存放形式四个字节的内存实际存放形式(+65537)(+65537)补补补补=0 0000 0000 0000 0001 0000 0000 0000 0001000 0000 0000 0001 0000 000
25、0 0000 0001 11111111111111111111111011111111符号位,符号位,表示负表示负(-65537)(-65537)补补补补=1 1111 1111 1111 1110 1111 1111 1111 1111111 1111 1111 1110 1111 1111 1111 1111 按位求反,末位加按位求反,末位加按位求反,末位加按位求反,末位加1 1 1 1 真值为:真值为:真值为:真值为:-65537!-65537!-65537!-65537!为什么为什么为什么为什么-65537-65537-65537-65537这个数在这个数在这个数在这个数在16161
26、616位内存单元中的表示与在位内存单元中的表示与在位内存单元中的表示与在位内存单元中的表示与在32323232位位位位内存单元中的表示不相同呢?内存单元中的表示不相同呢?内存单元中的表示不相同呢?内存单元中的表示不相同呢?这主要是因为这主要是因为这主要是因为这主要是因为-65537-65537-65537-65537这个数超出了这个数超出了这个数超出了这个数超出了16161616位内存单元表示数位内存单元表示数位内存单元表示数位内存单元表示数的范围的范围的范围的范围,所以实际存储的值(,所以实际存储的值(,所以实际存储的值(,所以实际存储的值(-1-1-1-1)与要表示的值()与要表示的值()
27、与要表示的值()与要表示的值(-65537655376553765537)不同,但)不同,但)不同,但)不同,但-65537-65537-65537-65537并没有超出了并没有超出了并没有超出了并没有超出了32323232位内存单元表示位内存单元表示位内存单元表示位内存单元表示数的范围,所以实际存储的值就是其本身。因此,我们在数的范围,所以实际存储的值就是其本身。因此,我们在数的范围,所以实际存储的值就是其本身。因此,我们在数的范围,所以实际存储的值就是其本身。因此,我们在C C C C语言中对数据处理时必须要注意数据的表示范围,以免引语言中对数据处理时必须要注意数据的表示范围,以免引语言中
28、对数据处理时必须要注意数据的表示范围,以免引语言中对数据处理时必须要注意数据的表示范围,以免引起不必要的错误起不必要的错误起不必要的错误起不必要的错误。3.整型变量整型变量整型变量的定义整型变量的定义整型变量的定义整型变量的定义int int int int 变量名变量名变量名变量名 ,变量名变量名变量名变量名2 2 2 2,变量名,变量名,变量名,变量名nnnn;intintintint必须小写必须小写必须小写必须小写至少一个空格至少一个空格至少一个空格至少一个空格必须为合法的标识符必须为合法的标识符必须为合法的标识符必须为合法的标识符以逗号以逗号以逗号以逗号,分隔分隔分隔分隔以分号以分号以
29、分号以分号;结尾结尾结尾结尾定义时可以赋初值,方法:在变量名后面增加定义时可以赋初值,方法:在变量名后面增加定义时可以赋初值,方法:在变量名后面增加定义时可以赋初值,方法:在变量名后面增加“=“=“=“=数值数值数值数值”例:例:int a;int x,y,z;int m=2,y=-3;当程序中定义了一个变量时,计算机会为这个变量当程序中定义了一个变量时,计算机会为这个变量当程序中定义了一个变量时,计算机会为这个变量当程序中定义了一个变量时,计算机会为这个变量分配一个相应大小的内存单元。因此,这个变量是有值分配一个相应大小的内存单元。因此,这个变量是有值分配一个相应大小的内存单元。因此,这个变
30、量是有值分配一个相应大小的内存单元。因此,这个变量是有值的,它的值就是对应内存单元的值。如果定义时没有赋的,它的值就是对应内存单元的值。如果定义时没有赋的,它的值就是对应内存单元的值。如果定义时没有赋的,它的值就是对应内存单元的值。如果定义时没有赋初值,则这个值程序员是无法预知的。初值,则这个值程序员是无法预知的。初值,则这个值程序员是无法预知的。初值,则这个值程序员是无法预知的。整型变量的分类整型变量的分类整型变量的分类整型变量的分类 修饰符修饰符修饰符修饰符 控制变量是否有符号:控制变量是否有符号:控制变量是否有符号:控制变量是否有符号:signedsignedsignedsigned(有
31、符号)和(有符号)和(有符号)和(有符号)和unsignedunsignedunsignedunsigned(无符号)(无符号)(无符号)(无符号)控制整型变量的值域范围控制整型变量的值域范围控制整型变量的值域范围控制整型变量的值域范围 :shortshortshortshort(短)和(短)和(短)和(短)和longlonglonglong(长)。(长)。(长)。(长)。有符号基本型(有符号基本型(有符号基本型(有符号基本型(intintintint)intintintint a=-2;a=-2;a=-2;a=-2;/定义一个有符号整型变量定义一个有符号整型变量定义一个有符号整型变量定义一个
32、有符号整型变量a a a a,并赋初值,并赋初值,并赋初值,并赋初值-2-2-2-2 占一个机器字大小的内存单元。占一个机器字大小的内存单元。占一个机器字大小的内存单元。占一个机器字大小的内存单元。TCTCTCTC下下下下,变量占变量占变量占变量占2 2 2 2个字节(个字节(个字节(个字节(16161616位)的位)的位)的位)的内存单元;内存单元;内存单元;内存单元;VC6.0VC6.0VC6.0VC6.0下,变量占下,变量占下,变量占下,变量占4 4 4 4个字节(个字节(个字节(个字节(32323232位)的内存单元。位)的内存单元。位)的内存单元。位)的内存单元。如果定义变量时,不指
33、定如果定义变量时,不指定如果定义变量时,不指定如果定义变量时,不指定signedsignedsignedsigned,也不指定,也不指定,也不指定,也不指定unsignedunsignedunsignedunsigned,则默认为,则默认为,则默认为,则默认为signedsignedsignedsigned(有符号)(有符号)(有符号)(有符号)1111111011111111低地址低地址高地址高地址低字节低字节高字节高字节符号位符号位符号位符号位变量变量变量变量a a占用占用占用占用的内存单元的内存单元的内存单元的内存单元(2(2字节字节字节字节)有符号整型变量在内存中的实际存放形式有符号整
34、型变量在内存中的实际存放形式(假设在假设在BC3.1BC3.1下下)无符号基本型(无符号基本型(无符号基本型(无符号基本型(unsigned unsigned unsigned unsigned intintintint或或或或unsignedunsignedunsignedunsigned)unsigned int a=2;unsigned int a=2;/定义一个无符号整型变量定义一个无符号整型变量定义一个无符号整型变量定义一个无符号整型变量a a a a,并赋初值,并赋初值,并赋初值,并赋初值2 2 2 2 或或或或 unsigned a=2;unsigned a=2;占用的内存单元字
35、节数同占用的内存单元字节数同占用的内存单元字节数同占用的内存单元字节数同intintintint类型。与类型。与类型。与类型。与int a=2;int a=2;int a=2;int a=2;等价。等价。等价。等价。unsigned int a=-2;unsigned int a=-2;/定义一个无符号整型变量定义一个无符号整型变量定义一个无符号整型变量定义一个无符号整型变量a a a a,并赋初值,并赋初值,并赋初值,并赋初值-2-2-2-2 或或或或 unsigned a=-2;unsigned a=-2;1111111011111111无符号整型变量在内存中的实际存放形式无符号整型变量在
36、内存中的实际存放形式(假设在假设在TCTC下下)低字节低字节高字节高字节低地址低地址高地址高地址数据位数据位数据位数据位变量变量变量变量a a占用占用占用占用的内存单元的内存单元的内存单元的内存单元(2(2字节字节字节字节)其值为:其值为:其值为:其值为:65534!65534!65534!65534!注意:注意:对于有符号数也好还是无符号数也好,其实在计对于有符号数也好还是无符号数也好,其实在计算机内存中表示是不加区分的,都是以其补码形式表示,只算机内存中表示是不加区分的,都是以其补码形式表示,只是我们怎样看待最高二进制位的问题,如果把最高位当成符是我们怎样看待最高二进制位的问题,如果把最高
37、位当成符号位看待,则为有符号数,如果把最高位当成数据位看待,号位看待,则为有符号数,如果把最高位当成数据位看待,则变为无符号数。则变为无符号数。例如:例如:unsigned int a=-2unsigned int a=-2;printf(“%d”printf(“%d”,a)a);-有符号输出,则为有符号输出,则为有符号输出,则为有符号输出,则为-2-2 printf(“%u”printf(“%u”,a)a);-无符号输出,则为无符号输出,则为无符号输出,则为无符号输出,则为6553465534 有符号短整型(有符号短整型(有符号短整型(有符号短整型(short short short sho
38、rt intintintint或或或或shortshortshortshort)short int a=2;short int a=2;/定义一个有符号短整型变量定义一个有符号短整型变量定义一个有符号短整型变量定义一个有符号短整型变量a a a a,并赋初值,并赋初值,并赋初值,并赋初值2 2 2 2 或或或或 short a=2;short a=2;占用的内存单元为占用的内存单元为占用的内存单元为占用的内存单元为2 2 2 2个字节,无论是个字节,无论是个字节,无论是个字节,无论是TCTCTCTC还是还是还是还是VCVCVCVC。无符号短整型(无符号短整型(无符号短整型(无符号短整型(uns
39、igned short unsigned short unsigned short unsigned short intintintint或或或或unsigned shortunsigned shortunsigned shortunsigned short)unsigned short int a=2;unsigned short int a=2;/定义一个无符号短整型变量定义一个无符号短整型变量定义一个无符号短整型变量定义一个无符号短整型变量a a a a,并赋初值,并赋初值,并赋初值,并赋初值2 2 2 2 或或或或 unsigned short a=2;unsigned short a
40、=2;占用的内存单元字节数同占用的内存单元字节数同占用的内存单元字节数同占用的内存单元字节数同shortshortshortshort类型。类型。类型。类型。在在在在TC2.0TC2.0TC2.0TC2.0下,下,下,下,unsigned shortunsigned shortunsigned shortunsigned short类型与类型与类型与类型与unsigned intunsigned intunsigned intunsigned int类类类类型是等价的型是等价的型是等价的型是等价的。short=int=long;/cshort=int=long;/cshort=int=long
41、;/cshort=int=long;/c语言标准中要保证如左;在语言标准中要保证如左;在语言标准中要保证如左;在语言标准中要保证如左;在tctctctc中前两个内存一样,中前两个内存一样,中前两个内存一样,中前两个内存一样,vcvcvcvc中后两个一样中后两个一样中后两个一样中后两个一样 有符号长整型(有符号长整型(有符号长整型(有符号长整型(long long long long intintintint或或或或longlonglonglong)long int a=234567;long int a=234567;/定义一个有符号长整型变量定义一个有符号长整型变量定义一个有符号长整型变量定
42、义一个有符号长整型变量a a a a,并赋初值,并赋初值,并赋初值,并赋初值234567234567234567234567 或或或或 long a=234567;long a=234567;占用的内存单元为占用的内存单元为占用的内存单元为占用的内存单元为4 4 4 4个字节,无论是个字节,无论是个字节,无论是个字节,无论是TCTCTCTC还是还是还是还是VCVCVCVC。无符号长整型(无符号长整型(无符号长整型(无符号长整型(unsigned long unsigned long unsigned long unsigned long intintintint或或或或unsigned lon
43、gunsigned longunsigned longunsigned long)unsigned long int a=2;unsigned long int a=2;/定义一个无符号长整型变量定义一个无符号长整型变量定义一个无符号长整型变量定义一个无符号长整型变量a a a a,并赋初值,并赋初值,并赋初值,并赋初值2 2 2 2 或或或或 unsigned long a=2;unsigned long a=2;占用的内存单元字节数同占用的内存单元字节数同占用的内存单元字节数同占用的内存单元字节数同longlonglonglong类型。类型。类型。类型。在在在在VCVCVCVC中中中中lo
44、nglonglonglong与与与与intintintint类型基本相同,均占四个字节的内类型基本相同,均占四个字节的内类型基本相同,均占四个字节的内类型基本相同,均占四个字节的内存单元;但在存单元;但在存单元;但在存单元;但在TCTCTCTC中,中,中,中,longlonglonglong类型与类型与类型与类型与intintintint类型只是所占字节不类型只是所占字节不类型只是所占字节不类型只是所占字节不同外(同外(同外(同外(longlonglonglong占占占占4 4 4 4字节,字节,字节,字节,intintintint占占占占2 2 2 2字节),其它数据处理方法字节),其它数据
45、处理方法字节),其它数据处理方法字节),其它数据处理方法是一样的。是一样的。是一样的。是一样的。【例】【例】【例】【例】各种整型变量的定义各种整型变量的定义各种整型变量的定义各种整型变量的定义#include#include#define SUM 65535#define SUM 65535void main()void main()int a,b=20 int a,b=20;unsigned int c=0 xff;unsigned int c=0 xff;long D;long D;a=SUM;a=SUM;D=301;D=301;printf(a=%dn,a)printf(a=%dn,a)
46、;printf(b=%dn,b)printf(b=%dn,b);printf(c=%dn,c)printf(c=%dn,c);printf(“D=%dn”,D)printf(“D=%dn”,D);/文件包含文件包含,头文件说明头文件说明/定义符号常量定义符号常量SUMSUM,值为,值为6553565535/定义两个定义两个intint型变量型变量a a和和b b,b b赋初值赋初值2020/定义无符号整型变量定义无符号整型变量c c,并赋初值,并赋初值0 xff0 xff/定义长整型变量定义长整型变量D D /对对a a赋值为赋值为SUMSUM,这时,这时a a的值是的值是6553565535
47、/对对D D赋值为赋值为301301/以有符号十进制形式(以有符号十进制形式(%d%d)显示)显示a a的值的值/以有符号十进制形式(以有符号十进制形式(“%d”“%d”)显示)显示b b的值的值/以有符号十进制形式(以有符号十进制形式(%d%d)显示)显示c c的值的值/以有符号十进制形式(以有符号十进制形式(%d%d)显示)显示D D的值的值 变量定变量定变量定变量定义部分义部分义部分义部分语句执行部分语句执行部分语句执行部分语句执行部分在在在在TC3.0TC3.0TC3.0TC3.0下运行结果:下运行结果:下运行结果:下运行结果:a=-1 a=-1 b=20 b=20 c=255 c=2
48、55 D=301 D=301在在在在VC6.0VC6.0VC6.0VC6.0下运行结果:下运行结果:下运行结果:下运行结果:a=65535a=65535 b=20 b=20 c=255 c=255 D=301 D=301 对对对对于于于于16161616位位位位的的的的有有有有符符符符号号号号整整整整型型型型变变变变量量量量a a a a来来来来说说说说,因因因因65535655356553565535在在在在内内内内存存存存中中中中的的的的形形形形式式式式为为为为1 1 1 1,最最最最高高高高位位位位为为为为1 1 1 1表表表表示示示示负负负负,则则则则其其其其所所所所对对对对应应应应的
49、的的的十十十十进进进进制数就为制数就为制数就为制数就为-1-1-1-1。4.整数常量的分类整数常量的分类 根据其值所在范围确定其数据类型根据其值所在范围确定其数据类型根据其值所在范围确定其数据类型根据其值所在范围确定其数据类型。在。在。在。在TC2.0TC2.0TC2.0TC2.0下,如果整下,如果整下,如果整下,如果整型常量的值位于型常量的值位于型常量的值位于型常量的值位于-32768-32768-32768-3276832767327673276732767之间,之间,之间,之间,C C C C语言认为它是语言认为它是语言认为它是语言认为它是intintintint型常量;型常量;型常量;
50、型常量;如果整型常量的值位于如果整型常量的值位于如果整型常量的值位于如果整型常量的值位于-2147483648-2147483648-2147483648-21474836482147483647214748364721474836472147483647之间,之间,之间,之间,C C C C语言语言语言语言认为它是认为它是认为它是认为它是longlonglonglong型常量。型常量。型常量。型常量。整型常量后加字母整型常量后加字母整型常量后加字母整型常量后加字母l l l l或或或或L L L L,认为它是,认为它是,认为它是,认为它是long int long int long int