第二章 C语言基本数据类型及表示_第1页
第二章 C语言基本数据类型及表示_第2页
第二章 C语言基本数据类型及表示_第3页
第二章 C语言基本数据类型及表示_第4页
第二章 C语言基本数据类型及表示_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第二章第二章 C C语言基本数据类型语言基本数据类型及表示方法及表示方法 计算机应用基础计算机应用基础2第一节第一节 C语言数据类型语言数据类型 空类型空类型数据类型数据类型构造数据类型构造数据类型基本数据类型基本数据类型指针类型指针类型整型整型字符型字符型实型(浮点型)实型(浮点型)单精度型单精度型双精度型双精度型数组数组结构结构联合联合枚举枚举3第二节第二节 字符集及词法规则字符集及词法规则 一、字符集一、字符集字符是语言的最小构成单位,由一个语言使用的所字符是语言的最小构成单位,由一个语言使用的所有字符构成的集合称为该语言的字符有字符构成的集合称为该语言的字符(一一)ASCII字符集字符

2、集ASCII字符集中列出了所有可以使用的字符,共字符集中列出了所有可以使用的字符,共128个,它个,它具有以下特征:具有以下特征: 每个字符都有一个唯一的次序值,即每个字符都有一个唯一的次序值,即ASCII码。码。 数字字符数字字符0、1、2、9的的ASCII码从码从48开始,按升序连续排列。开始,按升序连续排列。 大写字母大写字母A、B、C、Z的的ASCII码从码从65开始,按升序连续排列。开始,按升序连续排列。 小写字母小写字母a、b、c、z的的ASCII码从码从97开开始,按升序连续排列。始,按升序连续排列。 4转义字符转义字符nC语言也经常使用转义字符,用于表示一些控制字符语言也经常使

3、用转义字符,用于表示一些控制字符或其他字符集无法表示的字符。或其他字符集无法表示的字符。n转义字符由反斜杠跟上一个字符或数字组成,它把反转义字符由反斜杠跟上一个字符或数字组成,它把反斜杠后面的字符或数字转换成别的意义。虽然转义字斜杠后面的字符或数字转换成别的意义。虽然转义字符形式上由多个字符组成,但它只代表一个字符。符形式上由多个字符组成,但它只代表一个字符。5字符含义ASCII码n t b r f ddd xhh 换行 向跳格(即跳到下一个输出区) 退格 车 纸换页 斜杠 输出单引号 输出双引号 13 位八进制所代表的字符 12 位十六进制所代表的字符 10981312923934 6二、词

4、法规则二、词法规则n程序设计语言中的单词(也称词法元素),是由一个程序设计语言中的单词(也称词法元素),是由一个或几个字符构成的有意义的最小语言单位。在或几个字符构成的有意义的最小语言单位。在C语言语言中,单词一般被分成五类:中,单词一般被分成五类:标识符、关键字(保留标识符、关键字(保留字)、常量和字符串、运算符、其它分隔符。字)、常量和字符串、运算符、其它分隔符。n(一一) 标识符标识符 n标识符用来标识或表示程序、函数、数据类型、变量标识符用来标识或表示程序、函数、数据类型、变量等。等。nC语言规定,标识符由字母、数字及下划线组成,语言规定,标识符由字母、数字及下划线组成,。标识符所包含

5、的字符个数不。标识符所包含的字符个数不限,但一般不要超过限,但一般不要超过32个字符,如果超过个字符,如果超过32个字符,个字符,系统只识别前系统只识别前32个字符,标识符的英文字母区分大小个字符,标识符的英文字母区分大小写。写。7例例n下面是合法的标识符:下面是合法的标识符:sum,_total, Class,student_name,lotus_1_2_3,li_lingn下面是不合法的标识符:下面是不合法的标识符:M.D.john,$123,3a54,abnC语言中,标识符中的字母区分大小写。语言中,标识符中的字母区分大小写。例如,例如,Sum和和sum是两个不同的标识符。是两个不同的标

6、识符。用户自己定义标识符时,不能使用以下列出的关键用户自己定义标识符时,不能使用以下列出的关键字。字。8关键字关键字n在在C语言中,关键字是有特定含义和专门用途的标识语言中,关键字是有特定含义和专门用途的标识符(在符(在C语言的学习进程中,我们会一一认识它们),语言的学习进程中,我们会一一认识它们),不能作为其他用途。不能作为其他用途。C语言中的关键字一共有语言中的关键字一共有32个:个:autobreakcasecharconstcontinue default dodouble elseenumextern floatforgotoifintlongregister return shor

7、signedsizeofstaticstruct switch typedef unionunsigned voidvolatile while9特定字特定字n特定字是特定字是C C语言定义的一些作为指令的标识符,它们语言定义的一些作为指令的标识符,它们主要用在预处理命令中,习惯将它们看作是关键字。主要用在预处理命令中,习惯将它们看作是关键字。特定字主要有以下特定字主要有以下7 7个:个:ndefine, include, undef, ifdef, ifndef, endifdefine, include, undef, ifdef, ifndef, endif, , line line 1

8、0第三节第三节 常量常量n在程序运行过程中,其值不能改变的量称为常量。在程序运行过程中,其值不能改变的量称为常量。nC C语言中,常量是有数据类型的,它的类型由书写格语言中,常量是有数据类型的,它的类型由书写格式决定。式决定。1010、017017、0 x2f0 x2f是整型常量,是整型常量,123.23123.23、4.3e4.3e2 2是实型常量,是实型常量,aa、nn是字符常量,是字符常量,“12345”12345”、“China”China”是字符串常量。是字符串常量。11一、整型常量一、整型常量nC C语言中的整型常量(整数)有十进制、八进制、十语言中的整型常量(整数)有十进制、八进

9、制、十六进制六进制3 3种表现形式。种表现形式。 十进制整数。由正、负号和数字十进制整数。由正、负号和数字0 09 9组成,但组成,但首位数字不能是首位数字不能是0 0。如。如123123、0 0、1212等。等。 八进制整数。由正、负号和数字八进制整数。由正、负号和数字0 07 7组成,组成,首首位数字必须是位数字必须是0 0。如。如01230123、011011等。等。 十六进制整数。由正、负号和数字十六进制整数。由正、负号和数字0 09 9、英文、英文字符字符a af f或或A AF F组成,组成,首位数字前必须有前缀首位数字前必须有前缀0 x0 x或或0X0X. .。如。如0 x12a

10、0 x12a、0X34D0X34D等。等。12例例2.1 2.1 不同形式的整数的赋值和输出不同形式的整数的赋值和输出main()main() int int a, b, c; a, b, c; a = 13; a = 13; b = 013; b = 013; c = 0 x13; c = 0 x13; printf printf (%d,%d,%d n,a, b, c); (%d,%d,%d n,a, b, c); printf printf (%x,%x,%x n,a, b, c); (%x,%x,%x n,a, b, c); printf printf (%o,%o,%o n,a, b

11、, c); (%o,%o,%o n,a, b, c); 上机验证上机验证13二、实型常量二、实型常量n实型常量又称为浮点数,可以用十进制浮点数表示法和科学计实型常量又称为浮点数,可以用十进制浮点数表示法和科学计数法表示,与数学中实数的表示类似。数法表示,与数学中实数的表示类似。n(一)(一) 点数表示法点数表示法例如,例如,3.14、0.0n(二)科学计数法(二)科学计数法例如,例如,123e3或或123E3 123103 e3、2.1e3.5、.e3 是非法的实数。是非法的实数。一个实数可以用科学计数法表示为多种指数形式。一个实数可以用科学计数法表示为多种指数形式。v例如:例如:123.45

12、6v 123.456e0 v 12.3456e1 v 1.23456e2 规范化的指数形式规范化的指数形式 v 0.0123456e414例例2.22.2实型数据的输出实型数据的输出main()main() float a = 123.45; float a = 123.45; printf printf (%f n,a); (%f n,a); printf printf (%e n,a); (%e n,a); 上机验证上机验证15三、字符常量和字符串常量三、字符常量和字符串常量n(一)字符常量(一)字符常量n字符常量是指单个字符,用一对单引号及其所括起的字符常量是指单个字符,用一对单引号及其

13、所括起的字符来表示。字符来表示。例如,例如,AA、aa、11、&是字符常量,是字符常量,它们分别表示字母它们分别表示字母A A、a a、数字字符、数字字符1 1和符号和符号& &。每个。每个字符在内存中占用一个字节,用于存储它的字符在内存中占用一个字节,用于存储它的ASCIIASCII码。码。所以所以C C语言中的字符具有数值特征,可以像整数一语言中的字符具有数值特征,可以像整数一样参加运算,例如,样参加运算,例如,A+1= 66A+1= 66,对应于字符,对应于字符BB,因为字符,因为字符BB的的ASCIIASCII码是码是6666。 16(二)字符串常量(二)字符串

14、常量n字符串常量是一对双引号括起来的字符序列。字符串常量是一对双引号括起来的字符序列。“How are you?”How are you?”、“student”student”、“a”a”、“123.456”123.456”注意注意aa是字符常量,而是字符常量,而“a”a”是字符串常量。是字符串常量。n两者有什么区别呢?两者有什么区别呢?C C语言规定,在每一个字符串的结尾加一语言规定,在每一个字符串的结尾加一个字符串结束标志个字符串结束标志00。00是一个是一个“空操作字符空操作字符”,它,它不引起任何控制动作,也不是一个可显示字符。不引起任何控制动作,也不是一个可显示字符。例如例如: :字

15、符串字符串“StudentStudent”,存放在内存中是,存放在内存中是S St tu ud de en nt t00n系统在尾部自动加上了系统在尾部自动加上了00,它仅用来判断字符串是否结束,它仅用来判断字符串是否结束,在输出时并不输出在输出时并不输出00。所以字符串。所以字符串“a”a”实际上包含了实际上包含了aa和和00两个字符。两个字符。17四、符号常量四、符号常量一个常量也可以用一个标识符来代表,称为符号常量。一个常量也可以用一个标识符来代表,称为符号常量。例例2.3 2.3 输入球的半径,计算圆面积、球表面积和体积输入球的半径,计算圆面积、球表面积和体积#define P 3.1

16、4 #define P 3.14 main()main() float r, s1, s2, v; float r, s1, s2, v; scanf(%f,&r scanf(%f,&r); ); s1= P s1= P* *r r* *r; r; s2 = 4 s2 = 4* *P P* *r r* *r; r; v = 4.0/3 v = 4.0/3* *P P* *r r* *r r* *r; r; printf(s1=%f,s2=%f,v=%fn,s1, s2, v); printf(s1=%f,s2=%f,v=%fn,s1, s2, v); 18 例例2.4写出以下程

17、序的运行结果写出以下程序的运行结果main() char c1=a,c2=b,c3 =c; char c4 =101,c5 =116; printf(a%d b%d t c%c t abcn,c1, c2, c3); printf( t b %c%c,c4, c5);运行验证运行验证19第四节第四节 变量及其类型说明变量及其类型说明 n在程序运行过程中,其值可以改变的量称为变量。在程序运行过程中,其值可以改变的量称为变量。n一旦定义了某个变量,该变量表示的都将是同一个内一旦定义了某个变量,该变量表示的都将是同一个内存位置,程序员只需提供一个名字,就可在程序的其存位置,程序员只需提供一个名字,就

18、可在程序的其它部分引用该内存位置,直到释放该变量。它部分引用该内存位置,直到释放该变量。 20变量具有名字和数据类型两个基本属性变量具有名字和数据类型两个基本属性n每一变量被指定为一确定数据类型,在编译时就能为每一变量被指定为一确定数据类型,在编译时就能为其分配相应的存储单元。其分配相应的存储单元。如指定如指定a、b为为int 型,编译系统将为型,编译系统将为a和和b各分配两各分配两个字节,并按整数方式存储数据。个字节,并按整数方式存储数据。n一个变量在一个时刻只能存放一个值。如果某一个变一个变量在一个时刻只能存放一个值。如果某一个变量在程序运行中数据发生变化,则现行值将取代原来量在程序运行中

19、数据发生变化,则现行值将取代原来的数据。的数据。 21一、整型变量一、整型变量 表表2.1 2.1 整数类型整数类型 名称名称 类型名类型名 数据长度数据长度 最小取值范围最小取值范围 有符号整型有符号整型 intint 16 16位位 327683276832767 32767 (2 215152 215151 1) 无符号整型无符号整型 unsigned intunsigned int 16 16位位 0 065535 65535 (0 02 216161 1) 有符号短整型有符号短整型 short intshort int 16 16位位 327683276832767 32767 (2

20、 215152 215151 1) 无符号短整型无符号短整型 unsigned shortintunsigned shortint 16 16位位 0 065535 65535 (0 02 216161 1) 有符号长整型有符号长整型 long intlong int 32 32位位 214748364821474836482147483647 2147483647 (2 231312 231311 1)无符号长整型无符号长整型 unsigned long intunsigned long int 32 32位位 0 04294967295 4294967295 (0 02 232321 1)

21、22例例 2.5 整型变量的定义与使用整型变量的定义与使用 main() int a, b, c, d; unsigned u; a =12; b = 24; u = 10; c = a+u; d = b+u; printf(a+u = %d, b+u = %d n, c, d); 23二、实型变量二、实型变量 n单精度(单精度( floatfloat型)型)每个每个floatfloat型在内存中占用型在内存中占用4 4个字节个字节,它的有效数字,它的有效数字一般有一般有7 78 8位,取值范围约为位,取值范围约为(10(10-37-3710103838) ) 。单精度实型变量只能保证单精度实

22、型变量只能保证8 8位有效数字位有效数字 n双精度(双精度(doubledouble型)型)double double 型所占的存储空间是型所占的存储空间是floatfloat型的两倍,型的两倍,即即8 8个字节个字节,它的有效数字一般有,它的有效数字一般有15151616位,取值范围位,取值范围约为约为(10(10-307-3071010308308) )。24例例 2.6实型数据的舍入误差实型数据的舍入误差main()main() float a; double b; float a; double b; a = 1234567.89; b = 1234567.89; a = 123456

23、7.89; b = 1234567.89; a = a +10; b = b + 10; a = a +10; b = b + 10; printf(%f,%lf,a printf(%f,%lf,a, b); , b); 输出结果中,输出结果中,a a的结果没有的结果没有b b的结果精确的结果精确运行验证运行验证25三、字符型变量三、字符型变量n字符型变量用来存储字符常量。它在定义时使用类字符型变量用来存储字符常量。它在定义时使用类型名型名char,例如例如: char c1,c2;n定义了两个字符变量,各可以放一个字符,因此可定义了两个字符变量,各可以放一个字符,因此可以用下面的语句对它们赋

24、值:以用下面的语句对它们赋值:c1 = A; c2 = #;26字符变量的特点字符变量的特点n将一个字符常量赋予一个字符变量,实际上是把该字将一个字符常量赋予一个字符变量,实际上是把该字符的符的ASCII码存放到字符变量的存储单元中。码存放到字符变量的存储单元中。例如字符例如字符A的的ASCII码是码是65,即将,即将65以存储整数以存储整数数据的方式进行存储。数据的方式进行存储。n字符型数据和整型数据之间就可以通用。既可以用一字符型数据和整型数据之间就可以通用。既可以用一个字符对字符变量赋值,也可以用一个整数对字符变个字符对字符变量赋值,也可以用一个整数对字符变量赋值(此时整数的取值范围应是

25、有效的量赋值(此时整数的取值范围应是有效的ASCII码)。码)。同样,一个字符数据既可以以字符形式输出,也同样,一个字符数据既可以以字符形式输出,也可以以整数形式(字符的可以以整数形式(字符的ASCII码)输出。码)输出。对字符数据进行算术运算,相当于对它们的对字符数据进行算术运算,相当于对它们的ASCII码进行相应运算。码进行相应运算。27例例2.7 字符变量的输入、输出字符变量的输入、输出main () char c1,c2; c1 = 65; c2 = B; printf(%c,%cn,c1,c2); printf(%d,%dn,c1,c2); 28例例2.8 译密码程序译密码程序n要将

26、要将“China”译成密码,密码规律是:用原来的字母后面译成密码,密码规律是:用原来的字母后面第第4个字母代替原来的字母。例如,字母个字母代替原来的字母。例如,字母“A”后面第后面第4个字个字母是母是“E”,用,用“E”代替代替“A”。因此,。因此,“China”应译成应译成“Glmre”。请编一程序,首先对。请编一程序,首先对c1、c2、c3、c4、c5这这5个变量分别赋值个变量分别赋值C、h、i、n 、a,经过运算,经过运算,使使c1、c2、c3、c4、c5分别变为分别变为G、l、m、r 、e,并输出。,并输出。main () char c1=C,c2=h,c3=i,c4=n,c5=a;

27、c1=c1+4;c2=c2+4;c3=c3+4;c3=c4+4;c5=c5+4; printf(密码是密码是%c%c%c%c%cn,c1, c2, c3, c4, c5); 29四、变量赋值四、变量赋值n变量可以看作是用来存放常量的盒子。将常量存放于变量可以看作是用来存放常量的盒子。将常量存放于变量中通常称为对变量赋值。变量中通常称为对变量赋值。n变量赋值一般有三种方法:变量赋值一般有三种方法:定义变量的同时对变量赋值(也称对变量初始化或定义变量的同时对变量赋值(也称对变量初始化或者赋初值)者赋初值) 用赋值语句对变量赋值用赋值语句对变量赋值 使用使用scanfscanf()()输入函数对变量

28、赋值。输入函数对变量赋值。对于字符变量的赋值,除了以上对于字符变量的赋值,除了以上3 3种方法外,还可种方法外,还可以使用字符输入函数以使用字符输入函数getchargetchar()()。 30例例2.9 变量赋值的方法变量赋值的方法main () int a, b, c = 3; b = 3; scanf(%d,&a); printf(%d,%d,%d,a, b, c); 31赋值时要注意变量类型和常量类型保持一致赋值时要注意变量类型和常量类型保持一致 main() int a; a = 32789; /* 将超过最大允许值的一个数据赋予将超过最大允许值的一个数据赋予a */ pr

29、intf(%d,a);32五、变量类型转换规则五、变量类型转换规则 n在在C C语言中,不同类型的数据可以混合运算,但这些语言中,不同类型的数据可以混合运算,但这些数据首先要转换成同一类型,然后再作运算。数据首先要转换成同一类型,然后再作运算。n数据类型的转换包括自动转换和强制转换。数据类型的转换包括自动转换和强制转换。自动转换根据运算符是否为赋值运算又有不同的转自动转换根据运算符是否为赋值运算又有不同的转换规则,自动转换由换规则,自动转换由C C语言编译系统自动完成。语言编译系统自动完成。强制转换则通过特定的运算符完成强制转换则通过特定的运算符完成 。33普通算术运算(非赋值运算)的转换规则

30、普通算术运算(非赋值运算)的转换规则 doubledoublefloatfloatunsigned longunsigned longlonglongunsignedunsignedunsigned shortunsigned shortintintchar, shortchar, short高高低低从右到左,从低到高;从整到实,从短到长从右到左,从低到高;从整到实,从短到长34转换规则转换规则n1.1.水平方向的转换:水平方向的转换:是必定的转换,所有是必定的转换,所有charchar型和型和shortshort型自动地转换型自动地转换成成intint型;型;所有所有unsigned shortunsigned short型自动地转换成型自动地转换成unsignedunsigned型;型;所有所有longlong型自动地转换成型自动地转换成unsigned longunsigned long型;所有型;所有floatfloat型自动地转换成型自动地转换成doubledouble型。型。n2 2垂直方向的转换:经过水平方向的转换,如果参垂直方向的转换:经过水平方向的转换,如果参加运算的数据的类型仍然不相同,再将这些数据自动加运算的数据的类型仍然不相同,再将这些数据自动转换成其中级别最高的类型转换成其中级别最高的类型 35n设变量设变量i i为为i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论