模块2 C语言数据_第1页
模块2 C语言数据_第2页
模块2 C语言数据_第3页
模块2 C语言数据_第4页
模块2 C语言数据_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

1、模块2 C语言数据描述与计算语言数据描述与计算2.1 C语言的词法2.2常量和变量2.3基本数据结构2.4 C语言的运算符和表达式2.1C程序的词法n任何一种语言,都有自己的符号、单字、单词以及语句的构成规则。C语言作为计算机的一种程序设计语言,也 有自己的字符集、标示符以及命名规则。2.1C程序的词法n2.1.1字符集字符是C语言最基本的元素,C语言字符集由字母、数字、空白符、标点符号和特殊字符组成。(1)字母:AZ,az。(2)数字:09.(3)空白符:空格、制表符、换行符。(4)标点符号、特殊字符。(5)转义字符:n、b等2.1C程序的词法n2.1.2标示符nC语言中的标示符有关键字、预

2、定标示符、用户标识等几种。n(1)关键字:C语言系统设置的具有特定含义、专门用途的字符序列称为关键字。关键字不能用于其他用途,只能小写。n例如:if、else、int、double、char等n2 预定义标示符n所谓预定义标示符,是指在C语言中预先定义并具有特殊含义的标示符。C语言允许把这类标示符重新定义另作它用,但这将使这些标示符失去预先定义的原意。鉴于目前各种计算机系统的C语言都一致把这标示符作为固定的库函数或预编译处理中的专门命令实用,因此,为了避免误解,建议用户不要把这类标示符另作它用。n例如:define、Include等n3用户标示符n由用户根据需要定义的标示符称为用户标示符。用户

3、标示符一般用来给常量、变量、函数、数组、类型、文件等命名。n用户标示符命名规则如下:n(1)只能由字母、数字和下划线组成,且第一个字符必须为字母或下划线。n(2)有大小之分。n(3)ANSI C没有限制标示符的长度,但各个编译系统都有自己的规定和限制。n(4)标示符不能和关键字同名,最好也不与预定义标识符同名。n(5)标示符应当有一定的意义,做到见名知意,以增加程序的可读性。n例如:na1、x2、s_1、s_2、_3、ggde2f_1nDf 1、1a、dsina、s*b、+d2.2 常量和变量在C语言中,基本数据按其取值是否可以改变可以分为常量和变量,它们可与数据类型结合起来分类。整型常量、浮

4、点型常量、字符常量等整型变量、浮点型变量、字符变量等n2.2.1常量在程序运行过程中,其值不能改变的量称为常量。n1 常量的类型n整型常量(短整型常量、长整型常量)、实型常量、字符型常量和字符串常量等。1、2、12、4.6、-1.23、a、A、”asd”等。2 符号常量在C语言中可以用一个符号名来代表一个常量,称为符号常量。符号常量必须在程序中加以指定,并符合标示符命名规则。用define定义时,前面必须加“#”开头,命令行最后不加分号。n为了区别于一般的变量,符号常量通常用大写字母标识。#include #define PI 3.14159main()float r,area;r=5.0;a

5、rea=PI*r*r;printf(area=%fn,area);n2.2.2变量在程序运行过程中,其值可以改变的量称为变量。程序中用到的变量都必须有一个名字作为标示,变量的名字由用户定义。注意:(1)变量名必须符合标示符命名规则,一个变量实质代表内存中的某个存储单元。(2)C语言中的变量必须“先定义,后使用”。只有声明过的变量才可以在程序中使用。声明的变量属于确定的类型,编译系统可以访遍地检查变量所进行运算的合法性。在编译时变量的类型可以为变量确定存储空间,“先定义,后使用”使程序效率高。(3)像常量一样也有不同的类型。在定义变量的同时要说明其类型,以便系统在编译时能根据其类型为其分配相应的

6、存储单元。2.3 基本数据类型C语言提供了丰富的数据类型,其中最常用的是基本数据类型。不同类型的数据,其长度不同。在使用之前,必须先声明数据类型,以便为其分配相应的存储单元。整型实型字符型n2.3.1 整型数据1.整型数据的分类C语言中的整型数据有短整型(short int)、基本整型(int)、长整型(long int)、无符号型(unsigned)。若不指定变量为无符号型,则变量默认为有符号型(signed)。n不同的编译系统或计算机系统对这几类整型数据所占用的字节数有不同的规定。类型类型类型名类型名字节字节取值范围取值范围整型int2(16b)-215215-1短整型short2(16b

7、)-215215-1长整型long4(32b)-231231-1无符号整型unsigned int2(16b)0216-1无符号短整型unsigned short2(16b)0216-1(65535)无符号长整型unsigned long4(32b) 0232-1(04294967295)n2.整型数据在内存中的存储形式整型数据在内存中以二进制形式存放,事实上以补码形式存放。一个数据占若干字节,最高位为符号位(0为正,1为负)。1)正整数正整数的补码与原码形式相同。0111111111111111符号位 数据位2152)负整数负整数按补码形式存放。负数求补码的方法是:将该数的绝对值按位取反加1

8、。原码原码 1000000000000000取反取反 1111111111111111加加11补码补码 10000000000000003)无符号整数无符号整数按原码存放。例如:216-1=65535(注意)C标准没有具体规定各类整型数据所占用的字数,只要求long型数据长度不短于int型,short型不长于int型。具体如何实现,有各计算机系统自行决定。1111111111111113.整型常量值为整数的常量称为整数常量,简称整常量或整数。(1)十进制:就是通常意义下的十进制正常数。(2)八进制:以0开头,后面跟几位数字(由0到7组成)。例:0123,-011(3)十六进制:以0 x或0X开

9、头,后面跟几位数字(0到9,a到f组成).例如:0 x123,0 xa9,0XAA等。n4.整型变量整型变量可以分为短整型、基本整型、长整型和无符号整型等不同类型。例如:short s;int I,j,k;long n;定义以上语句后,编译程序会为是sijkn分别开辟相应字节的空间,而没有在存储单元存放任何值。此时变量中的值是无意义的。nC语言规定,可以在定义变量的同时给变量赋初值,也称为初始化。例如:int i,j,s=0;n2.3.2 实型数据实型常量又称为实数或浮点数。在C语言中,实型常量只能用十进制表示,有以下两种形式。(1)十进制小数形式。由数字和小数点组成(必须有小数点),如123

10、.0、.123、123.、0.0等。(2)指数形式,又称科学表示法。这种表示形式包含数值部分和指数部分,数值部分的表示方法同十进制小数,指数部分是一个可正可负的整型数,这两部分用字母e或E连接起来。例如:123X103 表示为123e3、1.23E5使用实型常量需要注意以下几点:(1)字母e或E之前必须有数字,字母后的指数必须为整数。E2、e3、e2.3、123e0.4等(2)规范化的指数形式。这种形式要求在字母之前的小数部分,小数点左边应当有且只有一位非零数字。例如:2.341e3、4.5E5等(3)许多C编译系统将实型,常量作为双精度实数处理,这样可以保证较高的精度,缺点是运算效率降低。n

11、2. 实型变量C语言中 的实型变量分为单精度型(float)、双精度型(double)和长双精度型(long double)。对于每一个实型变量也都应该先定义后实用。float a,b;double x,y,z;double t=1.0,s=0;与整型存储不同,实型数据是按指数形式存储的。一般单精度数据占4字节,双精度型数据占8个字节,长双精度占10个字节。实型数据有效位有限,实型数据的存储有误差的。n2.3.3 字符数据在处理数据时,经常会遇到向姓名、性别和住址等具有文本特征的数据,这些数据属于字符型数据。1. 字符常量用一对单引号括起来的单个字符,称为字符常量。例如,A、等。字符常量在内存

12、中占一个字节,存放的是字符的ASCII码值。2.转义字符常量转义字符是以“”开头的具有特殊含义的字符,这些字符常量必须包含在一对单引号内。b等n5.字符型变量字符型变量是用来存储字符数据的,同时只能存放一个字符,一般占用1字节内存单元。字符变量用关键字char进行定义。如,char ch1, ch2; /*定义两个字符变量: ch1,ch2*/ch1=a; ch2=b; /*给字符变量赋值*/注意:字符数据在内存中存储的是字符的ASCII码 一个无符号整数,其形式与整数的存储形式一样,所以语言允许字符型数据与整型数据之间通用。(1)可以将整数数据赋值给字符变量,也可以将字符数据赋值给整型变量。

13、(2)可以对字符数据进行算术运算,相当于对他们的ASCII码进行算术运算。(3)一个字符型数据,既可以字符形式输出,也可以整数形式输出。/*程序功能:用字符形式和整数形式输出字符变量*/ main() char ch1,ch2; ch1=a; ch2=b; printf(“ch1=%c,ch2=%cn”,ch1,ch2); printf(“ch1=%d,ch2=%dn”,ch1,ch2); 程序运行结果: ch1=a,ch2=b ch1=97,ch2=98 2.4C语言的运算符和表达式C语言的运算符非常丰富,除了控制语句和输入输出以外,几乎所有的基本操作都作为运算符处理,所以C语言的运算符可以

14、看作操作符。C语言肺腑的运算符构成了C语言丰富的表达式。C运算符算术运算符:(+ - * / % + -)关系运算符:( = !=)逻辑运算符:(! & |)位运算符 :( | &)赋值运算符:(= 及其扩展)条件运算符:(?:)逗号运算符:(,)指针运算符:(* &)求字节数 :(sizeof)强制类型转换:(类型)分量运算符:(. -)下标运算符:()其它 :(( ) -)n2.4.1算术运算符与算术表达式1.算术运算符对象个数名称运算符运算规则运算对象结果类型结合性单目正+取正值整型或实型整型或实型自右向左负-取负值双目加+加法整型或实型整型或实型自右向左减-减法

15、乘*乘法除/除法模(求余)%整数求余整型整型(1)除法运算符/,如果两个整数相除,结果为整数。(2)如果参加+、-、*、/运算的两个数有一个为实型,则结果为double型,因为所有实数都按double型进行运算。(3)求余运算符%,要求两个操作数均为整数,结果为两数相除所得余数。一般余数的符号与被除数符号相同。例:-8%5=-3(4)双目运算符优先级,*/%同级,+、-同级。n2算术表达式算术表达式 是指用算术运算符括号将运算对象(也称操作数)连接起来的、符合C语法规则的表达式。运算对象可以是常量、变量、函数等。A*b/5+1.5-a注意:C语言中表达式与数学表达式的不同n3 运算符的优先级和

16、结合性C语言规定了进行表达式求值过程中各运算符的优先级和结合性。(1)运算符的优先级。在表达式求值是,按运算符的优先级高低一次执行。如: a-b*c 等价于 a-(b*c)(2)运算符的结合性。如果在一个运算对象两侧的运算符的优先级相同,则按规定的结合方向处理。左结合性:运算对象先与左侧的运算符相结合 右结合性:运算对象先与右侧的运算符相结合(3)在书写多个运算符的表达式时,应当注意各个运算符的优先级,确保表达式中运算符能以正确的顺序参与运算。对于复杂的表达式,为了清楚起见可以加圆括号()强制规定计算顺序。n2.4.2 赋值运算符和表达式1.赋值表达式赋值符号“=”就是赋值运算符,它的作用是将

17、一个表达式的值赋给一个变量。2.赋值表达式赋值表达式用于计算右边表达式的值,把右边表达式的值赋左边的变量。变量变量 = 赋值表达式赋值表达式说明:(1)赋值运算符的左边必须为变量,右边可以是常量、变量、函数或表达式(2)赋值符号“=”不同于数学的等号,它没有相等的含义,而是进行“赋予”操作。(3)当赋值运算符两边的数据类型不同时,将有系统自动进行转换。转换的原则为先将赋值号右边表达式类型转为左边变量类型,然后赋值。(4)C语言的赋值符号(=)除了表示一个赋值操作外,还是一个运算符,也就是说赋值运算符完成赋值后,整个表达式还会产生一个所赋的值。例如:x=y=z=(3+5)(5)赋值运算符的优先级

18、只高于逗号表达式,比其他运算符的优先级都低,且具有自右向左的结合性。n3 复合赋值表达式复合赋值运算符是由一个双目运算符和一个赋值运算符构成。复合赋值运算的一般格式为: 变量 双目运算符双目运算符 = 表达式 复合赋值运算符它等价于等价于:变量 = 变量 双目运算符 (表达式)。当表达式为简单表达式时,表达式外的一对圆括号才可缺省,否则可能出错。例如,x += 3 /* 等价于x=x+3 */ y *= x + 6/* 等价于y=y*(x+6),而不是y=y*x+6 */C语言规定的10种复合赋值运算符如下:+=,-=,*=,/=,%=; /*复合算术运算符(5个)*/&=,=,|=,

19、=;/*复合位运算符(5个)*/n2.4.3 自增(+)、自减(-)运算符和表达式自增、自减运算符是C语言中最具有特色的两个单目运算符,其操作对象只有一个,既可以放在操作对象之前,也可以放在操作对象之后。例如(1)+k、-k。(2)k+、k-等价于k=k+1,k=k-1.前置运算运算符放在变量之前:变量、变量 先使变量的值增(或减),然后再以变化后的值参与其它运算,即先增减、后运算。后置运算运算符放在变量之后:变量、变量 变量先参与其它运算,然后再使变量的值增(或减),即先运算、后增减。n2.4.4逗号运算符和逗号表达式语言提供一种用逗号运算符“,”连接起来的式子,称为逗号表达式。逗号运算符又称顺序求值运算符。1.一般形式 表达式, 表达式, , 表达式n2.求解过程自左至右,依次计算各表达式的值,“表达式n” 的值即为整个逗号表达式的值。例如,逗号表达式“a = 3 * 5, a * 4”的值=6

温馨提示

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

评论

0/150

提交评论