版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章数据类型、运算符与表达式2.1程序设计概述2.2C语言的数据类型
2.3常量和变量
2.4整型数据
2.5实型数据
2.6字符型数据
2.7算术运算与算术表达式
2.8赋值运算与赋值表达式
2.9C语言特有的运算和运算符[Return]2.1程序设计概述一个程序应包括对数据的描述和对数据处理的描述。
1.对数据的描述,即数据结构。数据结构是计算机学科的核心课程之一,有许多专门著作论述,本课程就不再赘述。
在C语言中,系统提供的数据结构,是以数据类型的形式出现的。
2.对数据处理的描述,即计算机算法。算法是为解决一个问题而采取的方法和步骤,是程序的灵魂。为此,著名计算机科学家沃思(NikiklausWirth)提出一个公式:
数据结构+算法=程序
实际上,一个程序除了数据结构和算法外,还必须使用一种计算机语言,并采用结构化方法来表示。
[Return]2.2C语言的数据类型C语言提供的数据结构,是以数据类型形式出现的。具体分类如下:1.基本类型分为整型、实型(又称浮点型)、字符型和枚举型四种。2.构造类型分为数组类型、结构类型和共用类型三种。3.指针类型。在第9章中介绍。4.空类型C语言中的数据,有常量和变量之分,它们分别属于上述这些类型。本章将介绍基本类型中的整型、实型和字符型三种数据。[Return]
2.3常量和变量2.3.1常量
1.常量的概念
在程序运行过程中,其值不能被改变的量称为常量。
2.常量的分类
(1)整型常量(2)实型常量(3)字符常量。(4)符号常量。常量的类型,可通过书写形式来判别。2.3.2变量1.变量的概念在程序运行过程中,其值可以被改变的量称为变量。2.变量的两个要素(1)变量名。每个变量都必须有一个名字──变量名,变量命名遵循标识符命名规则。(2)变量值。在程序运行过程中,变量值存储在内存中。在程序中,通过变量名来引用变量的值。3.标识符命名规则(1)有效字符:只能由字母、数字和下划线组成,且以字母或下划线开头。(2)有效长度:随系统而异,但至少前8个字符有效。如果超长,则超长部分被舍弃。例如,由于student_name和student_number的前8个字符相同,有的系统认为这两个变量,是一回事而不加区别。在TCV2.0中,变量名(标识符)的有效长度为1~32个字符,缺省值为32。(3)C语言的关键字不能用作变量名。注意:C语言对英文字母的大小敏感,即同一字母的大小写,被认为是两个不同的字符。习惯上,变量名和函数名中的英文字母用小写,以增加可读性。思考题:在C语言中,变量名total与变量名TOTAL、ToTaL、tOtAl等是同一个变量吗?标识符命名的良好习惯──见名知意:所谓“见名知意”是指,通过变量名就知道变量值的含义。通常应选择能表示数据含义的英文单词(或缩写)作变量名,或汉语拼音字头作变量名。例如,name/xm(姓名)、sex/xb(性别)、age/nl(年龄)、salary/gz(工资)。4.变量的定义与初始化在C语言中,要求对所有用到的变量,必须先定义、后使用;且称在定义变量的同时进行赋初值的操作为变量初始化。(1)变量定义的一般格式[存储类型]数据类型变量名[,变量名2……];例如,floatradius,length,area;(2)变量初始化的一般格式[存储类型]数据类型变量名[=初值][,变量名2[=初值2]……];例如,floatradius=2.5,length,area;[Return]2.4整型数据2.4.1整型变量
1.分类
根据占用内存字节数的不同,整型变量又分为4类:(1)基本整型(类型关键字为int)。(2)短整型(类型关键字为short[int])。(3)长整型(类型关键字为long[int])。(4)无符号整型。无符号型又分为无符号基本整型(unsigned[int])、无符号短整型(unsignedshort)和无符号长整型(unsignedlong)三种,只能用来存储无符号整数。2.占用内存字节数与值域
上述各类型整型变量占用的内存字节数,随系统而异。在16位操作系统中,一般用2字节表示一个int型变量,且long型(4字节)≥int型(2字节)≥short型(2字节)。
显然,不同类型的整型变量,其值域不同。占用内存字节数为n的(有符号)整型变量,其值域为:-2n*8-1~(2n*8-1-1);无符号整型变量的值域为:0~(2n*8-1)。
例如,PC机中的一个int型变量,其值域为-22*8-1~(22*8-1-1),即-32768~32767;一个unsigned型变量的值域为:0~(22*8-1),即0~65535。
2.4.2整型常量1.三种表示形式整型常量即整常数,在C语言中可用三种形式表示:(1)十进制。例如10、36。(2)八进制(以数字0开头)。例如012。(3)十六进制(以数字0+小写字母x开头)。例如0x36。2.分类(1)基本整型。在16位机中,用2字节存储,其数据范围与int型变量一样。(2)长整型(在数值后面加“L(l)”)。对超出基本整型值域的整型常量,可使用长整型常量表示,其取值范围可达-231-(231-1)。例如,123l、315L等。3.类型匹配规则类型匹配规则为:一个整型常量,可以赋给能容纳下其值的整型变量。例如,其值在-215--(215-1)的整型常量,可以赋给int型变量和longint型变量;其值在-231--(231-1)的整型常量,就只能赋给longint型变量。注意:常量无unsigned型。但一个非负整型常量,只要它的值不超过相应变量的值域(即取值范围),也可以赋给unsigned型变量。[Return]2.5实实型型数据据实实型型变量量C语言言的实实型变变量,,分为为两种种:((1)单单精度度型。。类型型关键键字为为float,,一般般占44字节节(332位位)、、提供供7位位有效效数字字。((2)双双精度度型。。类型型关键键字为为double,一一般占占8个个字节节、提提供15~16位有有效数数字。。实实型型常量量1.表表示形形式实实型型常量量即实实数,,在CC语言言中又又称浮浮点数数,其其值有有两种种表达达形式式:((1))十进进制形形式。。例如如3.14、9.8。(2))指数数形式式:<尾数数>E(e)<整型型指数数>。。例如如3.0EE+5等。。2.关关于类类型实型常常量不不分float型和和double型。。一个个实型型常量量,可可以赋赋给一一个实实型变变量((float型型或double型型)。。[Return]2.6字字符符型数数据字字符符常量量1.字字符常常量的的定义义用一对对单引引号括括起来来的单单个字字符,,称为为字符符常量量。例如,,‘A’、、‘11’、、‘++’等等。2.转转义字字符C语言言还允允许使使用一一种特特殊形形式的的字符符常量量,就就是以以反斜斜杠““\””开开头的的转义义字符符。注意:如果果反斜斜杠或或单引引号本本身作作为字字符常常量,,必须须使用用转义义字符符:‘‘\\’、、‘\’‘‘。[案例2.1]用用转义义字符符输出出可打打印字字符和和不可可打印印字符符。/*案案例代代码文文件名名:AL2_1.C*//*程程序功功能::用转转义字字符输输出可可打印印字符符和不不可打打印字字符*/main(){printf(“\x4F\x4B\x21\n””);/*等等价价于printf(“OK!\n”);*/printf(“\x15\xAB\n””);}程序运运行结结果如如下::OOK!!§§½½[程序序演示示]字字符符变量量字符变变量的的类型型关键键字为为char,一一般占占用1字节节内存存单元元。1.变变量值值的存存储字字符符变量量用来来存储储字符符常量量。将将一个个字符符常量量存储储到一一个字字符变变量中中,实实际上上是将将该字字符的的ASCII码码值((无符符号整整数))存储储到内内存单单元中中。例如,,charch1,ch2;/*定义义两个个字符符变量量:ch1,ch2*/ch1=’’a’’;ch2=’b’;/*给给字符符变量量赋值值*/2.特特性字符数数据在在内存存中存存储的的是字字符的的ASCII码码───一一个无无符号号整数数,其其形式式与整整数的的存储储形式式一样样(如如图2-4所示示),,所以以C语语言允允许字字符型型数据据与整整型数数据之之间通通用。。(1))一个个字符符型数数据,,既可可以字字符形形式输输出,,也可可以整整数形形式输输出。。[案例2.2]字字符变变量的的字符符形式式输出出和整整数形形式输输出。/*案案例代代码文文件名名:AL2_2.C*//*程序序功能能:用用字符符形式式和整整数形形式输输出字字符变变量*/main(){charch1,ch2;ch1='a';ch2='b';printf(“ch1=%c,ch2=%c\n”,ch1,ch2);printf(““ch1=%d,ch2=%d\n””,ch1,ch2);}程程序运运行结结果::ch1=a,ch2=bch1=97,ch2=98[程序序演示示](2))允许许对字字符数数据进进行算算术运运算,,此时时就是是对它它们的的ASCII码码值进进行算算术运运算。。[案例2.3]字字符数数据的的算术术运算算。/*案案例代代码文文件名名:AL2_3.C*//*程程序功功能::字符符数据据的算算术运运算*/main(){charch1,ch2;ch1=‘a’;ch2=‘‘B’’;/*字母母的大大小写写转换换*/printf(“ch1=%c,ch2=%c\n”,ch1-32,ch2+32);/*用字字符形形式输输出一一个大大于256的数数值*/printf("ch1+200=%d\n",ch1+200);printf("ch1+200=%c\n",ch1+200);printf("ch1+256=%d\n",ch1+256);printf("ch1+256=%c\n",ch1+256);}程序运行结结果:ch1=A,ch2=bch1+200=297ch1+200=)ch1+256=353ch1+256=a[程序演示示]思考题:用字符形形式输出一一个大于256的数数值,会得得到什么结结果?2.6.3字符符串常量1.字符串串常量的概概念和字符符串长度字符串常量量是用一对对双引号括括起来的若若干字符序序列。字符串中字字符的个数数称为字符符串长度。。长度为0的字符串串(即一个个字符都没没有的字符符串)称为为空串,表表示为“””(一一对紧连的的双引号))。例如,“Howdoyoudo.”、““Goodmorning.”等,,都是字符符串常量,,其长度分分别为14和13((空格也是是一个字符符)。如如果反斜杠杠和双引号号作为字符符串中的有有效字符,,则必须使使用转义字字符。例如:(1)C:\msdos\v6.22→→"C:\\msdos\\v6.22"((2)Isay:"Goodbye!"→→"Isay:\"Goodbye!\"“2.字符串串的存储C语言规定定:在存储储字符串常常量时,由由系统在字字符串的末末尾自动加加一个‘\0’作为为字符串的的结束标志志。注意:在源程序序中书写字字符串常量量时,不必必加结束字字符‘\0’,否则则画蛇添足足。如如果有一个个字符串为为“CHINA”,,则它在内内存中的实实际存储如如下所示::最后一个字字符'\0'是系统统自动加上上的,它占占用6字节节而非5字字节内存空空间。CHINA\0综上所述,,字符常量量'A'与与字符串常常量"A"是两回事事:(1)定界界符不同::字符常量量使用单引引号,而字字符串常量量使用双引引号;(2)长度度不同:字字符常量的的长度固定定为1,而而字符串常常量的长度度,可以是是0,也可可以是某个个整数;(3)存储储要求不同同:字符常常量存储的的是字符的的ASCII码值,,而字符串串常量,除除了要存储储有效的字字符外,还还要存储一一个结束标标志’\0’。[Return]2.7算算术运运算与算术术表达式在C语言中中,除控制制语句和输输入输出函函数外,其其它所有基基本操作都都作为运算算符处理。。1.五种基基本算术运运算符+、-(减减法/取负负)、*、、/、%((求余数))(1)关于于除法运算算/C语言规定定:两个整整数相除,,其商为整整数,小数数部分被舍舍弃。例如如,5/2=2。((2)关于于求余数运运算%要求两侧的的操作数均均为整型数数据,否则则出错。2.表达式式和算术表表达式(1)表达达式的概念念用运算符和和括号将运运算对象((常量、变变量和函数数等)连接接起来的、、符合C语语言语法规规则的式子子,称为表表达式。单个常量、、变量或函函数,可以以看作是表表达式的一一种特例。。将单个常常量、变量量或函数构构成的表达达式称为简简单表达式式,其它表表达式称之之为复杂表表达式。(2)算术术表达式的的概念表达式中的的运算符都都是算术运运算符。例例如,3+6*9、、(x+y)/2-1等等,都是算算术表达式式。良好的源程程序书写习习惯:在表达式式中,在双双目运算符符的左右两两侧各加一一个空格,,可增强程程序的可读读性。请比较表达达式“(x+y)/2––1”与与“(x+y)/2–1”,,您认为哪哪个的可读读性更好一一些?3.运算符符的优先级级与结合性性(1)C语语言规定了了运算符的的优先级和和结合性。。所谓结合性性是指,当当一个操作作数两侧的的运算符具具有相同的的优先级时时,该操作作数是先与与左边的运运算符结合合,还是先先与右边的的运算符结结合。自左至右的的结合方向向,称为左左结合性。。反之,称称为右结合合性。结合性是CC语言的独独有概念。。除单目运算符、赋值运算符和条件运算符是右右结合性外外,其它运运算符都是是左结合性性。(2)表达达式求值1)按运算算符的优先先级高低次次序执行。。例如,先先乘除后加加减。2)如果在在一个运算算对象(或或称操作数数)两侧的的运算符的的优先级相相同,则按按C语言规规定的结合合方向(结结合性)进进行。例如,算术术运算符的的结合方向向是“自左左至右”,,即:在执执行“a––b+c””时,变量量b先与减减号结合,,执行“a-b”;然后后再执行加加c的运算算。4.数据类类型转换(1)在在C语言中中,整型、、实型和字字符型数据据间可以混混合运算((因为字符符数据与整整型数据可可以通用))。如果一个运运算符两侧侧的操作数数的数据类类型不同,,则系统按按“先转换换、后运算算”的原则则,首先将将数据自动动转换成同同一类型,,然后在同同一类型数数据间进行行运算。转转换规则如如图2-5所示。1)横向向向左的箭头头,表示必必须的转换换。char和short型型必须转转换成int型型,float型必必须转换成成double型。。2)纵向向向上的箭头头,表示不不同类型的的转换方向向。例如,int型与double型数据据进行混合合运算,则则先将int型数据据转换成double型,然然后在两个个同类型的的数据间进进行运算,,结果为double型。注意:箭头方向向只表示数数据类型由由低向高转转换,不要要理解为int型先先转换成unsigned型型,再转换换成long型,最最后转换成成double型。。(2)除自自动转换外外,C语言言也允许强强制转换。。数据类型强强制转换的的一般格式式为:(要转换成成的数据类类型)(被被转换的表表达式)当被转换的的表达式是是一个简单单表达式时时,外面的的一对圆括括号可以缺缺省。例如,(double)a(等价价于(double)(a))/*将变变量a的值值转换成double型*/(int)(x+y)/*将将x+y的的结果转换换成int型*/(float)5/2((等价于(float)(5)/2))/*将将5转换成成实型,再再除以2((=2.5)*/(float)(5/2)/*将将5整除2的结果((2)转换换成实型((2.0))*/注意:强制转换换类型得到到的是一个个所需类型型的中间量量,原表达达式类型并并不发生变变化。例如如,(double)a只只是将变量量a的值转转换成一个个double型的的中间量,,其数据类类型并未转转换成double型。[Return]2.8赋赋值值运算与赋赋值表达式式1.赋值运运算赋值符号““=”就是是赋值运算算符,它的的作用是将将一个表达达式的值赋赋给一个变变量。赋值运算符符的一般形形式为:变量=赋值值表达式例如,x=5y=(float)5/2如果表达式式值的类型型,与被赋赋值变量的的类型不一一致,但都都是数值型型或字符型型时,系统统自动地将将表达式的的值转换成成被赋值变变量的数据据类型,然然后再赋值值给变量。。思考题:假设变量量num的的数据类型型为float,其其值为2.5,则执执行“num=(int)num”后,num的值值等于多少少?2.复合赋赋值运算复合赋值运运算符是由由赋值运算算符之前再再加一个双双目运算符符构成的。。复合赋值运运算的一般般格式为::变量双目运算符符=表达式└──┬───┘复合赋值运运算符它等价于:变量=变量双双目运算算符(表表达式)。。当表达式为为简单表达达式时,表表达式外的的一对圆括括号才可缺缺省,否则则可能出错错。例如,x+=3/*等价于于x=x+3*/y*=x+6 /*等价于于y=y*(x+6),而不不是y=y*x+6*/C语言规定定的10种种复合赋值值运算符如如下:+=,-=,*=,,/=,%=;/*复合合算术运算算符(5个个)*/&=,^=,|=,,<<=,,>>=;; /*复复合位运算算符(5个个)*/3.赋值表表达式由赋值运算算符或复合合赋值运算算符,将一一个变量和和一个表达达式连接起起来的表达达式,称为为赋值表达达式。(1)一般般格式变量((复合)赋赋值运算符符表达达式(2)赋值值表达式的的值任何一个表表达式都有有一个值,,赋值表达达式也不例例外。被赋值变量量的值,就就是赋值表表达式的值值。例如,“a=5”这个赋赋值表达式式,变量a的值“55”就是它它的值。[Return]2.9C语言言特有的运运算和运算算符2.9.1自增((++)、、自减(--)运算算1.作用自自增运算算使单个变变量的值增增1,自减减运算使单单个变量的的值减1。。2.用法与运运算规则自自增、自自减运算符符都有两种种用法:((1)前置置运算───运算符放放在变量之之前:+++变量、---变量先先使变量量的值增((或减)11,然后再再以变化后后的值参与与其它运算算,即先增增减、后运运算。((2))后置运算算──运算算符放在变变量之后::变量+++、变量---变变量量先参与其其它运算,,然后再使使变量的值值增(或减减)1,即即先运算、、后增减。。[案例2.4]自增、、自减运算算符的用法法与运算规规则示例。。/*案例代代码文件名名:AL2_4.C*//*程序功功能:自增
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 男性性欲障碍病因介绍
- 开题报告:职业学科基本理论及其体系构建研究
- 开题报告:幼儿园教师融合教育素养指标体系及培养体系的构建研究
- 开题报告:新时代西南民族地区乡村教师在地化可持续发展机制研究
- 2024农业安全生产工作计划
- 广州市青创赛推出青年创新创业人才三大计划
- 公司年度宣传工作计划
- 上半年公司人事部个人工作计划
- 月业务员销售工作计划
- 2024年度专业婚礼顾问服务合同
- 国家开放大学《公文写作》期末考试辅导参考答案
- 人教版四年级上册数学第六单元《除数是两位数的除法》测试卷(综合卷)
- 2024年行政执法人员执法资格知识考试题库(附含答案)
- 2024版《安全生产法》考试题库附答案(共80题)
- 人教版(2024)七年级上册数学第5章单元测试卷(含答案)
- 情商与智慧人生学习通超星期末考试答案章节答案2024年
- 广东开放大学2024年秋《国家安全概论(S)(本专)》形成性考核作业参考答案
- 巨量-营销科学(初级)认证培训考试题库(含答案)
- DBJ15 31-2016建筑地基基础设计规范(广东省标准)
- GB/T 39204-2022信息安全技术关键信息基础设施安全保护要求
- GB/T 17622-2008带电作业用绝缘手套
评论
0/150
提交评论