《清华大学C语言谭浩强.pptx》由会员分享,可在线阅读,更多相关《清华大学C语言谭浩强.pptx(129页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、会计学1清华大学清华大学C语言谭浩强语言谭浩强2.1 C语言的数据类型语言的数据类型n n2.1.1 C语言具有的数据类型语言具有的数据类型n n2.1.2 C 语言的基本数据类型语言的基本数据类型n n2.1.3 基本数据类型的修饰基本数据类型的修饰第1页/共129页2.1.1 C语言具有的数据类型语言具有的数据类型n n数据类型是指数据的内在表现形式。不同的数据类型数据类型是指数据的内在表现形式。不同的数据类型数据类型是指数据的内在表现形式。不同的数据类型数据类型是指数据的内在表现形式。不同的数据类型在内存中的存储方式不同,在内存中所占的字节数也在内存中的存储方式不同,在内存中所占的字节数
2、也在内存中的存储方式不同,在内存中所占的字节数也在内存中的存储方式不同,在内存中所占的字节数也不相同。不相同。不相同。不相同。n n通俗地说,数据在加工计算中的特征就是数据类型。通俗地说,数据在加工计算中的特征就是数据类型。通俗地说,数据在加工计算中的特征就是数据类型。通俗地说,数据在加工计算中的特征就是数据类型。n n例如,职工的年龄和工资都可以进行加减等算术运算,例如,职工的年龄和工资都可以进行加减等算术运算,例如,职工的年龄和工资都可以进行加减等算术运算,例如,职工的年龄和工资都可以进行加减等算术运算,具有一般数值的特点,在具有一般数值的特点,在具有一般数值的特点,在具有一般数值的特点,
3、在C C语言中称为数值型。其中语言中称为数值型。其中语言中称为数值型。其中语言中称为数值型。其中年龄是整数,所以称为年龄是整数,所以称为年龄是整数,所以称为年龄是整数,所以称为整型整型整型整型;工资一般为实数,所以;工资一般为实数,所以;工资一般为实数,所以;工资一般为实数,所以称为称为称为称为实型实型实型实型。第2页/共129页 C语言的数据类型有以下几种语言的数据类型有以下几种,如图如图2-1所示。所示。图图2-1 C语言的数据类型语言的数据类型 第3页/共129页2.1.2 C 语言的基本数据类型语言的基本数据类型n n基本数据类型是不可再分的基本数据类型是不可再分的基本数据类型是不可再
4、分的基本数据类型是不可再分的最基本的数据类型,是构造最基本的数据类型,是构造最基本的数据类型,是构造最基本的数据类型,是构造其他数据类型的基础。其他数据类型的基础。其他数据类型的基础。其他数据类型的基础。n nC C语言提供的五种基本的数语言提供的五种基本的数语言提供的五种基本的数语言提供的五种基本的数据类型及其对应的关键字如据类型及其对应的关键字如据类型及其对应的关键字如据类型及其对应的关键字如表表表表2-12-1所示。所示。所示。所示。n n字符型用来描述单个的字符;字符型用来描述单个的字符;字符型用来描述单个的字符;字符型用来描述单个的字符;整型用来描述整数;浮点型整型用来描述整数;浮点
5、型整型用来描述整数;浮点型整型用来描述整数;浮点型和双精度型用来描述实数,和双精度型用来描述实数,和双精度型用来描述实数,和双精度型用来描述实数,其中双精度型比浮点型表示其中双精度型比浮点型表示其中双精度型比浮点型表示其中双精度型比浮点型表示的精度高;无值类型用来描的精度高;无值类型用来描的精度高;无值类型用来描的精度高;无值类型用来描述无形式参数的述无形式参数的述无形式参数的述无形式参数的C C函数、无函数、无函数、无函数、无返回值的返回值的返回值的返回值的C C函数或无定向指函数或无定向指函数或无定向指函数或无定向指针等。针等。针等。针等。数据类型数据类型数据类型数据类型关键字关键字关键字
6、关键字字符型字符型字符型字符型charchar整型整型整型整型intint浮点(单精度)型浮点(单精度)型浮点(单精度)型浮点(单精度)型 floatfloat双精度型双精度型双精度型双精度型doubledouble无值型无值型无值型无值型voidvoid表2-1 C语言基本的数据类型及其对应的关键字第4页/共129页n nC C C C语语语语言言言言规规规规定定定定,可可可可以以以以在在在在基基基基本本本本数数数数据据据据类类类类型型型型关关关关键键键键字字字字前前前前面面面面加加加加上上上上 类类类类 型型型型 修修修修 饰饰饰饰 符符符符“signedsignedsignedsigne
7、d、unsignedunsignedunsignedunsigned、shortshortshortshort、long”long”long”long”,从从从从而而而而扩扩扩扩展展展展基基基基本本本本数数数数据据据据类类类类型型型型的的的的数数数数值值值值范范范范围围围围或或或或提提提提高基本数据类型的精度。高基本数据类型的精度。高基本数据类型的精度。高基本数据类型的精度。n nTurbo C Turbo C Turbo C Turbo C 编译系统中的基本数据类型修饰有如下编译系统中的基本数据类型修饰有如下编译系统中的基本数据类型修饰有如下编译系统中的基本数据类型修饰有如下的规定:的规定:
8、的规定:的规定:(1 1 1 1)charcharcharchar型数据可以用型数据可以用型数据可以用型数据可以用signedsignedsignedsigned、unsignedunsignedunsignedunsigned加以修饰,加以修饰,加以修饰,加以修饰,即可以有即可以有即可以有即可以有charcharcharchar、signed charsigned charsigned charsigned char、unsigned char unsigned char unsigned char unsigned char 三种形式。三种形式。三种形式。三种形式。2.1.3 基本数据类型
9、的修饰基本数据类型的修饰 第5页/共129页(2 2 2 2)int int int int 型数据可以用型数据可以用型数据可以用型数据可以用signedsignedsignedsigned、unsignedunsignedunsignedunsigned、shortshortshortshort、longlonglonglong加以修饰,即可以有加以修饰,即可以有加以修饰,即可以有加以修饰,即可以有intintintint、signed intsigned intsigned intsigned int、unsigned intunsigned intunsigned intunsigned
10、 int、short intshort intshort intshort int、long intlong intlong intlong int、signed signed signed signed long int long int long int long int、unsigned long intunsigned long intunsigned long intunsigned long int等形式。对于等形式。对于等形式。对于等形式。对于intintintint而言,当使用类型修饰后,关键字而言,当使用类型修饰后,关键字而言,当使用类型修饰后,关键字而言,当使用类型修饰后,
11、关键字intintintint可省略不写,可省略不写,可省略不写,可省略不写,例如例如例如例如signed long intsigned long intsigned long intsigned long int可以写成可以写成可以写成可以写成longlonglonglong,unsigned unsigned unsigned unsigned long intlong intlong intlong int可以写成可以写成可以写成可以写成unsigned longunsigned longunsigned longunsigned long。(3 3 3 3)C C C C语言的语言的语
12、言的语言的ANSI CANSI CANSI CANSI C标准指出:各种变量的取值范标准指出:各种变量的取值范标准指出:各种变量的取值范标准指出:各种变量的取值范围应在标题文件围应在标题文件围应在标题文件围应在标题文件limits.hlimits.hlimits.hlimits.h和和和和float.hfloat.hfloat.hfloat.h中作出定义。中作出定义。中作出定义。中作出定义。第6页/共129页2.2 常量及其类型常量及其类型n n2.2.1 整型常量整型常量n n2.2.2 实型常量实型常量n n2.2.3 字符型常量字符型常量n n2.2.4 字符串常量字符串常量n n2.2
13、.5 符号常量符号常量第7页/共129页2.2.1 2.2.1 整型常量整型常量整型常量整型常量 n n1.十进制整数十进制整数n n2.八进制整数八进制整数n n3.十六进制整数十六进制整数第8页/共129页n n十进制是整数的通常写法,十进制整数没有前缀,十进制是整数的通常写法,十进制整数没有前缀,十进制是整数的通常写法,十进制整数没有前缀,十进制是整数的通常写法,十进制整数没有前缀,其数码为其数码为其数码为其数码为0 09 9。例如:例如:例如:例如:437437n n八进制整数必须以数字八进制整数必须以数字八进制整数必须以数字八进制整数必须以数字0 0开头,即以开头,即以开头,即以开头
14、,即以0 0作为八进制作为八进制作为八进制作为八进制数的前缀。数码取值范围为数的前缀。数码取值范围为数的前缀。数码取值范围为数的前缀。数码取值范围为0 07 7。例如:例如:例如:例如:01230123n n十六进制整常数的前缀为十六进制整常数的前缀为十六进制整常数的前缀为十六进制整常数的前缀为0X0X或或或或0 x0 x。其数码为。其数码为。其数码为。其数码为0 09 9,A AF F或或或或a af f。例如:例如:例如:例如:0 x1230 x123第9页/共129页2.2.2 实型常量实型常量 1.1.小数形式小数形式小数形式小数形式2.2.指数形式指数形式指数形式指数形式第10页/共
15、129页1.小数形式小数形式n n由正负号、整数部分、十进制小数点和小数部分组成。整数部分由正负号、整数部分、十进制小数点和小数部分组成。整数部分由正负号、整数部分、十进制小数点和小数部分组成。整数部分由正负号、整数部分、十进制小数点和小数部分组成。整数部分和小数部分是由数字和小数部分是由数字和小数部分是由数字和小数部分是由数字0 09 9和小数点组成,其中小数点是不能缺少和小数点组成,其中小数点是不能缺少和小数点组成,其中小数点是不能缺少和小数点组成,其中小数点是不能缺少的。的。的。的。第11页/共129页2.指数形式指数形式n n在在在在小小小小数数数数的的的的基基基基础础础础上上上上,后
16、后后后面面面面加加加加阶阶阶阶码码码码标标标标志志志志(“e”e”e”e”或或或或“E”E”E”E”)以以以以及及及及阶阶阶阶码码码码组组组组成。其一般形式为:成。其一般形式为:成。其一般形式为:成。其一般形式为:a E na E na E na E n或或或或 a e na e na e na e nn n其其其其中中中中的的的的a a a a为为为为十十十十进进进进制制制制数数数数,E E E E或或或或e e e e为为为为阶阶阶阶码码码码标标标标志志志志,n n n n为为为为十十十十进进进进制制制制整整整整数数数数。需需需需要要要要注注注注意意意意的的的的是是是是,字字字字母母母母“
17、e”e”e”e”或或或或“E”E”E”E”之之之之前前前前必必必必须须须须有有有有数数数数字字字字,且且且且e e e e后后后后面面面面的的的的指指指指数数数数必必必必须须须须为整数,如为整数,如为整数,如为整数,如e5e5e5e5、3.24e3.23.24e3.23.24e3.23.24e3.2、e e e e等都是不合法的指数形式。等都是不合法的指数形式。等都是不合法的指数形式。等都是不合法的指数形式。第12页/共129页例例例例2.12.1以实数的形式输出三个数。以实数的形式输出三个数。以实数的形式输出三个数。以实数的形式输出三个数。main()main()printf(%fn,365
18、.);printf(%fn,365.);printf(%fn,365);printf(%fn,365);printf(%fn,365f);printf(%fn,365f);n n该程序的运行结果如下:该程序的运行结果如下:该程序的运行结果如下:该程序的运行结果如下:从输出结果可以看出第二行输出的从输出结果可以看出第二行输出的0.000000不是期望不是期望的数值。原因是实数不仅要有数字部分,而且还要有的数值。原因是实数不仅要有数字部分,而且还要有小数点,否则,小数点,否则,C程序运行结果将不是期望值。程序运行结果将不是期望值。365.000000 0.000000 365.000000第13页
19、/共129页2.2.3 字符型常量字符型常量 n n1.单引号表示法单引号表示法n n2.转义字符表示法转义字符表示法第14页/共129页1.单引号表示法单引号表示法n n对于可显示的字符常量,可直接用单引号将该字符括起来,如对于可显示的字符常量,可直接用单引号将该字符括起来,如对于可显示的字符常量,可直接用单引号将该字符括起来,如对于可显示的字符常量,可直接用单引号将该字符括起来,如 a a 、9 9 、Z Z 、=、+、?等。也可用字符的等。也可用字符的等。也可用字符的等。也可用字符的ASCIIASCII码值表码值表码值表码值表示字符,如十进制的示字符,如十进制的示字符,如十进制的示字符,
20、如十进制的8585表示大写字母表示大写字母表示大写字母表示大写字母 U U ,八进制数,八进制数,八进制数,八进制数01020102表示大写表示大写表示大写表示大写字母字母字母字母 B B 。第15页/共129页2.转义字符表示法转义字符表示法n n对于不能显示的字符(主要指控制字符,如回对于不能显示的字符(主要指控制字符,如回对于不能显示的字符(主要指控制字符,如回对于不能显示的字符(主要指控制字符,如回车符、换行符、制表符等)和一些在车符、换行符、制表符等)和一些在车符、换行符、制表符等)和一些在车符、换行符、制表符等)和一些在C C语言中语言中语言中语言中有特殊含义和用途的字符(如单引号
21、、双引号、有特殊含义和用途的字符(如单引号、双引号、有特殊含义和用途的字符(如单引号、双引号、有特殊含义和用途的字符(如单引号、双引号、反斜杠线等),只能用转义字符表示。反斜杠线等),只能用转义字符表示。反斜杠线等),只能用转义字符表示。反斜杠线等),只能用转义字符表示。n n转义字符是一种特殊的字符常量。转义字符以转义字符是一种特殊的字符常量。转义字符以转义字符是一种特殊的字符常量。转义字符以转义字符是一种特殊的字符常量。转义字符以反斜线反斜线反斜线反斜线“”开头,后面跟一个或几个字符。开头,后面跟一个或几个字符。开头,后面跟一个或几个字符。开头,后面跟一个或几个字符。转义字符具有特定的含义
22、,它不同于字符原有转义字符具有特定的含义,它不同于字符原有转义字符具有特定的含义,它不同于字符原有转义字符具有特定的含义,它不同于字符原有的意义,所以称的意义,所以称的意义,所以称的意义,所以称“转义转义转义转义”字符。常用的转义字字符。常用的转义字字符。常用的转义字字符。常用的转义字符及其含义如表符及其含义如表符及其含义如表符及其含义如表2-32-3所示。所示。所示。所示。第16页/共129页转义字符转义字符转义字符转义字符含义含义含义含义ASCIIASCII代码代码代码代码 nn换行换行换行换行 1010r r回车回车回车回车1313f f换页换页换页换页1212t t水平制表(水平制表(
23、水平制表(水平制表(TabTab)9 9vv垂直制表垂直制表垂直制表垂直制表1111bb退格符(退格符(退格符(退格符(backspacebackspace)8 8 反斜杠符反斜杠符反斜杠符反斜杠符 9292 单引号符单引号符单引号符单引号符 3939”双引号符双引号符双引号符双引号符 3434ddd ddd 1 13 3位八进制数所代表的字符位八进制数所代表的字符位八进制数所代表的字符位八进制数所代表的字符 xhh xhh 1 12 2位十六进制数所代表的字符位十六进制数所代表的字符位十六进制数所代表的字符位十六进制数所代表的字符 表表2-3 常用的转义字符及其含义常用的转义字符及其含义 第
24、17页/共129页vv说说说说明明明明:语语语语言言言言字字字字符符符符集集集集中中中中的的的的任任任任何何何何一一一一个个个个字字字字符符符符均均均均可可可可用用用用转转转转义义义义字字字字符符符符来来来来表表表表示示示示。表表表表中中中中的的的的dddddd和和和和xhhxhh正正正正是是是是为为为为此此此此而而而而提提提提出出出出的的的的。dddddd和和和和hhhh分分分分别别别别为为为为八八八八进进进进制制制制和和和和十十十十六六六六进进进进制制制制的的的的ASCIIASCII代代代代码码码码。如如如如101101表表表表示示示示字字字字母母母母“A”A”,102102表表表表示示示
25、示字字字字母母母母“B”B”,X0AX0A表示换行等。表示换行等。表示换行等。表示换行等。vv字符常量的特点:字符常量的特点:字符常量的特点:字符常量的特点:(1 1)字符常量只能用单引号括起来,不能用双引号或字符常量只能用单引号括起来,不能用双引号或字符常量只能用单引号括起来,不能用双引号或字符常量只能用单引号括起来,不能用双引号或其他符号。其他符号。其他符号。其他符号。(2 2)字符常量只能是单个字符,不能是字符串。)字符常量只能是单个字符,不能是字符串。)字符常量只能是单个字符,不能是字符串。)字符常量只能是单个字符,不能是字符串。(3 3)字符常量可以是字符集中任意字符。)字符常量可以
26、是字符集中任意字符。)字符常量可以是字符集中任意字符。)字符常量可以是字符集中任意字符。(4 4)C C语言对字符型和整型是不加区分的,字符型常语言对字符型和整型是不加区分的,字符型常语言对字符型和整型是不加区分的,字符型常语言对字符型和整型是不加区分的,字符型常量被视为量被视为量被视为量被视为1 1字节的整数,其值就是该字符的字节的整数,其值就是该字符的字节的整数,其值就是该字符的字节的整数,其值就是该字符的ASCIIASCII码,码,码,码,可以像整数一样参加数值运算。可以像整数一样参加数值运算。可以像整数一样参加数值运算。可以像整数一样参加数值运算。例如,例如,例如,例如,CC的的的的A
27、SCIIASCII码为码为码为码为6767,C-2C-2的值为的值为的值为的值为6565,即字符,即字符,即字符,即字符AA的的的的ASCIIASCII码。码。码。码。第18页/共129页 2.2.4 字符串常量字符串常量字符串常量字符串常量是用双引号括起来的零个或多个字符序列。是用双引号括起来的零个或多个字符序列。例如:例如:”,”Gold human!”,”010278”等都是字等都是字符串常量。符串常量。其中,两个双引号连写表示其中,两个双引号连写表示空字符串空字符串;当字符串中包含;当字符串中包含像单引号、双引号或反斜杠线这类有特定用途的字符时,像单引号、双引号或反斜杠线这类有特定用途
28、的字符时,应该分别用转义字符应该分别用转义字符、”、表示表示。例如,例如,”He said:”hello!”代表的英文句子是:代表的英文句子是:He said:”hello!”第19页/共129页n n一个字符串中所有字符的个数称为该一个字符串中所有字符的个数称为该一个字符串中所有字符的个数称为该一个字符串中所有字符的个数称为该字符串的长字符串的长字符串的长字符串的长度度度度,其中每个转义字符只当做一个字符。例如,其中每个转义字符只当做一个字符。例如,其中每个转义字符只当做一个字符。例如,其中每个转义字符只当做一个字符。例如,”1234567”1234567”,”xyz”xyz”,”Bbeds
29、Qd”BbedsQd”,”ABCD”ABCD”,”101102 x43x44”101102 x43x44”的长度分的长度分的长度分的长度分别为别为别为别为7 7、3 3、7 7、6 6、4 4。vvC C语语语语言言言言规规规规定定定定,每每每每个个个个字字字字符符符符串串串串在在在在内内内内存存存存中中中中占占占占用用用用的的的的字字字字节节节节数数数数等等等等于于于于字字字字符符符符串串串串的的的的长长长长度度度度加加加加1 1。其其其其中中中中最最最最后后后后一一一一个个个个字字字字节节节节存存存存放放放放的的的的字字字字符符符符称称称称为为为为“空空空空字字字字符符符符”,其其其其AS
30、CIIASCII码码码码为为为为0 0,书书书书写写写写时时时时常常常常用用用用转转转转义义义义字字字字符符符符 00来来来来表表表表示示示示,是是是是字字字字符符符符串串串串结结结结束束束束的的的的标标标标记。记。记。记。vv例例例例如如如如字字字字符符符符串串串串”MN”MN”和和和和”M”M”的的的的长长长长度度度度分分分分别别别别为为为为2 2和和和和1 1,它们在内存中分别占用它们在内存中分别占用它们在内存中分别占用它们在内存中分别占用3 3个字节和个字节和个字节和个字节和2 2个字节。个字节。个字节。个字节。第20页/共129页n n字符串常量和字符常量是两个不同的量,它们之字符串
31、常量和字符常量是两个不同的量,它们之字符串常量和字符常量是两个不同的量,它们之字符串常量和字符常量是两个不同的量,它们之间的主要区别有以下几点:间的主要区别有以下几点:间的主要区别有以下几点:间的主要区别有以下几点:(1 1)字符常量由单引号括起来,字符串常量由双引字符常量由单引号括起来,字符串常量由双引字符常量由单引号括起来,字符串常量由双引字符常量由单引号括起来,字符串常量由双引号括起来号括起来号括起来号括起来。(2 2)字符常量只能是单个字符,字符串常量则可)字符常量只能是单个字符,字符串常量则可)字符常量只能是单个字符,字符串常量则可)字符常量只能是单个字符,字符串常量则可以含一个或多
32、个字符。以含一个或多个字符。以含一个或多个字符。以含一个或多个字符。(3 3)可以把一个字符常量赋予一个字符变量,但)可以把一个字符常量赋予一个字符变量,但)可以把一个字符常量赋予一个字符变量,但)可以把一个字符常量赋予一个字符变量,但不能把一个字符串常量赋予一个字符变量。在不能把一个字符串常量赋予一个字符变量。在不能把一个字符串常量赋予一个字符变量。在不能把一个字符串常量赋予一个字符变量。在语言中没有相应的字符串变量,但是可以用一个语言中没有相应的字符串变量,但是可以用一个语言中没有相应的字符串变量,但是可以用一个语言中没有相应的字符串变量,但是可以用一个字符数组来存放一个字符串常量(详见第
33、字符数组来存放一个字符串常量(详见第字符数组来存放一个字符串常量(详见第字符数组来存放一个字符串常量(详见第4 4章的章的章的章的介绍)。介绍)。介绍)。介绍)。(4 4)字符常量占一个字节的内存空间。字符串常字符常量占一个字节的内存空间。字符串常字符常量占一个字节的内存空间。字符串常字符常量占一个字节的内存空间。字符串常量占的内存字节数等于字符串中字节数加量占的内存字节数等于字符串中字节数加量占的内存字节数等于字符串中字节数加量占的内存字节数等于字符串中字节数加1 1。增。增。增。增加的一个字节用来存放字符串结束的标志加的一个字节用来存放字符串结束的标志加的一个字节用来存放字符串结束的标志加
34、的一个字节用来存放字符串结束的标志00(ASCIIASCII码为码为码为码为0 0)。)。)。)。第21页/共129页2.2.5 符号常量符号常量n n1.符号常量的定义符号常量的定义n n2.符号常量的优点符号常量的优点第22页/共129页1.符号常量的定义符号常量的定义n n符号常量符号常量符号常量符号常量是用标识符表示的常量。是用标识符表示的常量。是用标识符表示的常量。是用标识符表示的常量。n n定义符号常量有三种方法:定义符号常量有三种方法:定义符号常量有三种方法:定义符号常量有三种方法:宏定义宏定义宏定义宏定义constconst修饰符修饰符修饰符修饰符枚举枚举枚举枚举n n这里先介
35、绍前两种,第三种在第这里先介绍前两种,第三种在第这里先介绍前两种,第三种在第这里先介绍前两种,第三种在第7 7章介绍。章介绍。章介绍。章介绍。第23页/共129页1)宏定义)宏定义n n宏定义是用指定的标识符来代表一串字符,其一般形式为:宏定义是用指定的标识符来代表一串字符,其一般形式为:宏定义是用指定的标识符来代表一串字符,其一般形式为:宏定义是用指定的标识符来代表一串字符,其一般形式为:#define#define 标识符标识符标识符标识符 字符串字符串字符串字符串n n例如:例如:例如:例如:#define PI 3.14159265#define PI 3.14159265第24页/共
36、129页2)const定义定义n nconstconst定义的符号常量既有类型又有值,与宏定义不同,其一般的定义的符号常量既有类型又有值,与宏定义不同,其一般的定义的符号常量既有类型又有值,与宏定义不同,其一般的定义的符号常量既有类型又有值,与宏定义不同,其一般的形式为:形式为:形式为:形式为:const const 数据类型数据类型数据类型数据类型 标识符标识符标识符标识符=常量表达式;常量表达式;常量表达式;常量表达式;n n例如:例如:例如:例如:const int max=300;const int max=300;const float x=max+3.14;const float
37、x=max+3.14;第25页/共129页2.符号常量的优点符号常量的优点n n符号常量具有以下优点:符号常量具有以下优点:符号常量具有以下优点:符号常量具有以下优点:(1 1)用符号常量可以清晰地看出常量所代表的物理)用符号常量可以清晰地看出常量所代表的物理)用符号常量可以清晰地看出常量所代表的物理)用符号常量可以清晰地看出常量所代表的物理意义。意义。意义。意义。(2 2)如果一个程序中多次出现某一个常量(例如,)如果一个程序中多次出现某一个常量(例如,)如果一个程序中多次出现某一个常量(例如,)如果一个程序中多次出现某一个常量(例如,3.141592653.14159265),就要多次书写
38、,使用符号常量就),就要多次书写,使用符号常量就),就要多次书写,使用符号常量就),就要多次书写,使用符号常量就可以较短的符号代替较长的数字,从而可以有效可以较短的符号代替较长的数字,从而可以有效可以较短的符号代替较长的数字,从而可以有效可以较短的符号代替较长的数字,从而可以有效地避免多次书写同一个常量,并减少出错的几率。地避免多次书写同一个常量,并减少出错的几率。地避免多次书写同一个常量,并减少出错的几率。地避免多次书写同一个常量,并减少出错的几率。(3 3)当程序中多次出现同一个常量需要修改时,)当程序中多次出现同一个常量需要修改时,)当程序中多次出现同一个常量需要修改时,)当程序中多次出
39、现同一个常量需要修改时,必须逐个修改,很可能漏改或错改。必须逐个修改,很可能漏改或错改。必须逐个修改,很可能漏改或错改。必须逐个修改,很可能漏改或错改。用符号常量用符号常量用符号常量用符号常量只需修改定义,就可以做到统改,减少出错的几只需修改定义,就可以做到统改,减少出错的几只需修改定义,就可以做到统改,减少出错的几只需修改定义,就可以做到统改,减少出错的几率。率。率。率。第26页/共129页2.3 变量及其类型变量及其类型n n2.3.1 变量及其定义变量及其定义n n2.3.2 整型变量整型变量n n2.3.3 实型变量实型变量n n2.3.4 字符型变量字符型变量n n2.3.5.字符串
40、变量字符串变量第27页/共129页2.3.1 变量及其定义变量及其定义n n变量是指在程序运行过程中其值可以发生变化的量。变量是指在程序运行过程中其值可以发生变化的量。变量是指在程序运行过程中其值可以发生变化的量。变量是指在程序运行过程中其值可以发生变化的量。n n一般情况下,变量用来保存程序运行过程中输入的一般情况下,变量用来保存程序运行过程中输入的一般情况下,变量用来保存程序运行过程中输入的一般情况下,变量用来保存程序运行过程中输入的数据、计算获得的中间结果以及程序的最终结果。数据、计算获得的中间结果以及程序的最终结果。数据、计算获得的中间结果以及程序的最终结果。数据、计算获得的中间结果以
41、及程序的最终结果。n n变量的定义格式为:变量的定义格式为:变量的定义格式为:变量的定义格式为:类型说明符类型说明符类型说明符类型说明符 变量名表变量名表变量名表变量名表;其中,类型说明符包括其中,类型说明符包括其中,类型说明符包括其中,类型说明符包括intint、floatfloat、doubledouble、charchar等,等,等,等,用来指定变量的数据类型;变量名表如果有多个变用来指定变量的数据类型;变量名表如果有多个变用来指定变量的数据类型;变量名表如果有多个变用来指定变量的数据类型;变量名表如果有多个变量,则彼此间要用逗号分隔开;分号是语句结束符。量,则彼此间要用逗号分隔开;分号
42、是语句结束符。量,则彼此间要用逗号分隔开;分号是语句结束符。量,则彼此间要用逗号分隔开;分号是语句结束符。第28页/共129页 例如:例如:例如:例如:int x;/*int x;/*定义了一个类型为整型的变量定义了一个类型为整型的变量定义了一个类型为整型的变量定义了一个类型为整型的变量x*/x*/int y,z;/*int y,z;/*定义了一个整型变量定义了一个整型变量定义了一个整型变量定义了一个整型变量y y和一个整型变量和一个整型变量和一个整型变量和一个整型变量z*/z*/float a,b,c;/*float a,b,c;/*定义了三个浮点型变量定义了三个浮点型变量定义了三个浮点型变
43、量定义了三个浮点型变量a a、b b、c*/c*/在变量定义时,应注意以下几点:在变量定义时,应注意以下几点:在变量定义时,应注意以下几点:在变量定义时,应注意以下几点:(1 1)允许在一个类型说明符后,定义多个相同类型的)允许在一个类型说明符后,定义多个相同类型的)允许在一个类型说明符后,定义多个相同类型的)允许在一个类型说明符后,定义多个相同类型的变量。各变量名之间用逗号间隔。变量。各变量名之间用逗号间隔。变量。各变量名之间用逗号间隔。变量。各变量名之间用逗号间隔。(2 2)类型说明符与变量名之间至少用一个空格间隔。)类型说明符与变量名之间至少用一个空格间隔。)类型说明符与变量名之间至少用
44、一个空格间隔。)类型说明符与变量名之间至少用一个空格间隔。(3 3)变量定义必须放在变量使用之前。一般放在函数)变量定义必须放在变量使用之前。一般放在函数)变量定义必须放在变量使用之前。一般放在函数)变量定义必须放在变量使用之前。一般放在函数体的开头部分。体的开头部分。体的开头部分。体的开头部分。(4 4)最后一个变量名之后必须以)最后一个变量名之后必须以)最后一个变量名之后必须以)最后一个变量名之后必须以分号分号分号分号“;”;”结尾。结尾。结尾。结尾。第29页/共129页2.3.2 2.3.2 整型变量整型变量整型变量整型变量n n整型变量的基本类型符为整型变量的基本类型符为整型变量的基本
45、类型符为整型变量的基本类型符为intint。可以根据数值的范围。可以根据数值的范围。可以根据数值的范围。可以根据数值的范围将整型变量定义为基本整型、短整型、长整型、无将整型变量定义为基本整型、短整型、长整型、无将整型变量定义为基本整型、短整型、长整型、无将整型变量定义为基本整型、短整型、长整型、无符号型,具体如下所述:符号型,具体如下所述:符号型,具体如下所述:符号型,具体如下所述:(1 1)基本整型:类型说明符为)基本整型:类型说明符为)基本整型:类型说明符为)基本整型:类型说明符为intint,在内存中占,在内存中占,在内存中占,在内存中占2 2个字个字个字个字节。节。节。节。(2 2)短
46、整型:类型说明符为)短整型:类型说明符为)短整型:类型说明符为)短整型:类型说明符为short intshort int或或或或shortshort,所占字,所占字,所占字,所占字节和取值范围均与基本型相同。节和取值范围均与基本型相同。节和取值范围均与基本型相同。节和取值范围均与基本型相同。(3 3)长整型:类型说明符为)长整型:类型说明符为)长整型:类型说明符为)长整型:类型说明符为long intlong int或或或或longlong,在内存中,在内存中,在内存中,在内存中占占占占4 4个字节。个字节。个字节。个字节。第30页/共129页(4 4)无符号型:类型说明符为)无符号型:类型说
47、明符为)无符号型:类型说明符为)无符号型:类型说明符为unsignedunsigned。其中,无。其中,无。其中,无。其中,无符号型又可与上述三种类型匹配而构成如下类型:符号型又可与上述三种类型匹配而构成如下类型:符号型又可与上述三种类型匹配而构成如下类型:符号型又可与上述三种类型匹配而构成如下类型:无符号基本型:类型说明符为无符号基本型:类型说明符为无符号基本型:类型说明符为无符号基本型:类型说明符为unsigned intunsigned int或或或或unsignedunsigned。无符号短整型:类型说明符为无符号短整型:类型说明符为无符号短整型:类型说明符为无符号短整型:类型说明符为
48、unsigned shortunsigned short。无符号长整型:类型说明符为无符号长整型:类型说明符为无符号长整型:类型说明符为无符号长整型:类型说明符为unsigned longunsigned long。vv说说说说明明明明:各各各各种种种种无无无无符符符符号号号号类类类类型型型型的的的的量量量量所所所所占占占占的的的的内内内内存存存存空空空空间间间间字字字字节节节节数数数数与与与与相相相相应应应应的的的的有有有有符符符符号号号号类类类类型型型型的的的的量量量量相相相相同同同同。但但但但由由由由于于于于省省省省去去去去了了了了符符符符号号号号位位位位,所所所所以以以以不不不不能能能
49、能表表表表示示示示负负负负数数数数。有有有有符符符符号号号号整整整整型型型型变变变变量量量量的的的的最最最最大大大大取取取取值值值值为为为为32767327673276732767,而而而而无无无无符符符符号号号号整整整整型型型型变变变变量量量量的的的的最最最最大大大大取取取取值值值值为为为为65535655356553565535。第31页/共129页类型类型类型类型类型说明符类型说明符类型说明符类型说明符字节字节字节字节取值范围取值范围取值范围取值范围 基本整型基本整型基本整型基本整型 intint 2 2-32768-327683276732767 短整型短整型短整型短整型short i
50、ntshort int 2 2-32768-327683276732767 长整型长整型长整型长整型long intlong int 4 4-2147483648-214748364821474836472147483647 无符号整型无符号整型无符号整型无符号整型unsigned intunsigned int 2 20 06553565535 无符号长整型无符号长整型无符号长整型无符号长整型unsigned longunsigned long 4 40 042949672954294967295 表表2-4 各类整型变量所分配的内存字节数及数的表示范围各类整型变量所分配的内存字节数及数的表