C语言讲义第02章-变量与表达式-34种表达式.ppt_第1页
C语言讲义第02章-变量与表达式-34种表达式.ppt_第2页
C语言讲义第02章-变量与表达式-34种表达式.ppt_第3页
C语言讲义第02章-变量与表达式-34种表达式.ppt_第4页
C语言讲义第02章-变量与表达式-34种表达式.ppt_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

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

文档简介

第二章变量与表达式,C语言程序设计,主要内容,简单表达式变量数据类型赋值语句复杂表达式基本输入输出函数小结,2.1简单表达式,所谓简单表达式就是指由算术运算符连接操作数组成的算术表达式2.1.1算术运算符及其表达式在C语言中有以下算术运算符:,2.1简单表达式,2.1.2C语言表达式书写规则对数学上的表达式和C语言程序中的表达式做了一个对比:数学表达式合法的C语言表达式x*(-y)x*y/(m*n)sqrt(fabs(5*x+y)19(-b+sqrt(b*b4*a*c)/(2*a),C语言表达式的书写要遵循一定的规则,规则如下:乘号用*表示,不能省略;表达式从左到右在同一基准上书写,无高低、大小之分,都写在同一行上;括号必须成对出现,且都用圆括号。,2.2变量,2.2.1变量变量就是指在程序的执行过程中其值可以改变的量。变量具有三要素:名称、类型和值变量的命名C语言规定:标识符只能由字母、数字和下划线三种字符构成,并且第一个字符必须是字符和下划线,不能使用C语言中的关键字C语言大小写敏感一般地,变量名使用小写字母表示,而大写字母常用来表示符号常量或自定义的类型名。在选择变量名和其他标识符时,应尽量注意做到“见名知意”,2.2变量,变量的定义变量定义的作用是:为变量指定一个名称及其数据类型,让系统给它分配相应的存储空间。确定相应变量的存储方式、数值范围和有效位数。确定相应变量所允许进行的操作。变量定义的一般格式为:数据类型变量名表;其中:变量名表可以包含若干个变量,两者之间用逗号分隔,如intix,iy;数据类型:可以是C语言中的基本数据类型,也可以是用户自定义的数据类型,2.2变量,变量赋值与初始化定义变量的同时对变量进行了初始化(赋初值)如果在定义时没有为变量赋初始值,使用已定义的变量前,要对它进行初始化2.2.2常量和符号常量在程序设计语言中,凡是在程序运行过程中其值不变的量,都称为常量。整型常量即整型常数,在C语言中整型常量有十进制、八进制和十六进制三种形式。十进制整型常量。不能以0开头,由正、负号和09数字组成的常数。八进制整型常量。以0开头,由07数字组成的常数。十六进制整型常量。以0 x或0X开头,由09数字和字母af(或AF)组成的常数。,2.2变量,实型常量:又称为浮点数,只能用十进制来表示,有两种表示形式:小数形式和指数形式。小数形式:它由正负号、数字和小数点组成的常数(必须有小数点,它前面的零可以缺省)。指数形式(科学计数法):它由数符、尾数(整数或小数)、阶码标志(E或e)、阶符和整数阶码组成的常数。注意E或e前面必须有数字,且E后面的指数必须是整数。,2.2变量,字符常量在C语言中,字符常量是就用单引号括起来的一个字符,其值为ASCII码值。在内存中,字符数据是以与其相对应的ASCII码(即以整数表示)来存储的,占用一个字节。因此C语言中字符数据和整型数据之间可以通用0和0是截然不同的两个数据,前者是字符常量,后者则是整型常数。,2.2变量,除了使用一般字符常量外,C语言还允许用一种特殊形式的字符常量转义字符常量,即一个以“”开头的特定字符序列,用来表示ASCII字符集中控制代码及某些用于功能定义的字符。常用的转义字符如表所示,2.2变量,例2.1转义字符的使用字符串常量字符串常量是由双引号括起来的一串字符序列字符串常量与字符常量是不同的,字符串常量中的字符序列连续存放,并在最后加上0字符作为字符串的结束标志字符常量是用单引号括起来的一个字符符号常量在程序中经常用到某些常量,为方便阅读程序,理解常量的含义,一般就把常量定义为符号常量。在C语言中符号常量定义的一般形式为:#define符号常量名常量表达式例2.2符号常量的应用,输出圆的面积,2.3数据类型,根据数据的取值范围、运算属性及存储方式等,C语言将数据分成不同的数据类型。C语言提供了丰富的数据类型,可分为基本类型、构造类型、指针类型和空类型,如图2-2所示数据类型确定了数据在内存中所占用的空间大小,也确定了它所表示的数据范围,2.3数据类型,2.3.1整型数据整型数据分为基本整型(int)、短整型(short)和长整型(long)三种类型,其中每一种类型又分为有符号(signed)和无符号(unsigned)两种类型。不同的整型数据占用的内存空间不同表列出了TC2.0系统中整型数据的长度、类型标识符和数值范围,原码1111.10011000000001011真值2n(2n-1)-1-0+0+12n-1补码100100111110000001011,2.3数据类型,整型变量的定义和应用C语言规定程序中用到的所有变量必须先定义才能使用,即“强制类型定义”。变量的定义,一般写在一个函数的开头的声明位置例2.3整型数据的运用整型数据的溢出例2.4整型数据的溢出整型常量的类型一个整型常量,如果其值在-3276832767之间,则认为它是int型,可以赋值给int型、shortint型和longint型变量。如果超出了这个范围,则认为它是longint型,可以将它赋值给一个longint型变量。在一个整型常量后面加上后缀L或l表示该常量为长整型(long)常量,如123l,012L,0 x4FL。在一个整型常量后面加上后缀U或u表示无符号整型(unsigned)常量。,2.3数据类型,2.3.2实型数据实型数据即浮点型数据,C的实型数据有单精度(float)型、双精度(double)型和长双精度(longdouble)型三种类型。由于不同的实型数据在内存中所占的存储单元不同,因此所提供的有效位数也不同,如表所示。,2.3数据类型,例2.5实型数据的精度误差。2.3.3字符型数据字符型数据类型标识符是用char表示,在内存中占一个字节(8位)。在内存中字符型数据是以所存字符的相应ASCII码存储。字符ASCII码值为0255字符数据的存储形式与整型数据的存储形式类似,因此,字符型数据和整型数据之间可以通用,但是字符型数据只占一个字节(8位),所以字符数据只能存放0255范围内的整数。一个字符型数据既可以以字符形式输出,也可以以整数形式输出。以字符形式输出时,先将存储单元中的ASCII码值转换成相应字符,然后再输出。以整数形式输出时,直接将ASCII码作为整数输出。字符型数据还可进行算术运算,相当于它们的ASCII码值参与运算。例2.6字符变量作算术运算,2.3数据类型,2.3.4类型转换在C语言中,不同类型的数据之间可以进行混合运算C语言中有两种类型转换方法:自动类型转换和强制类型转换。自动类型转换自动类型转换是指在不同类型的数据进行混合运算时,系统会自动进行数据类型的转换。但要遵循一定的规则,如图所示。,2.3数据类型,说明:横向箭头表示必作的转换,即凡是参与运算的char型和short型数据一律自动转换成int型,float型数据一律自动转换成double型,转换后如果两个操作数类型相同,作算术运算,运算结果与转换后的类型相同。相同类型(除char、short和float型外)操作数作算术运算的结果为同一类型。不同类型的数据或经过(1)转换后类型仍不相同,则按照图中纵向的箭头进行转换,参与运算中的低级别类型直接转换为参与运算中的高级别的数据类型。即如果一个int型数据和一个double型数据进行运算,int型数据则直接转换为double型数据,而不经过中间的转换。,2.3数据类型,2.强制类型转换自动类型转换是由编译系统自动进行的。除此之外,C语言还提供了在程序中进行强制类型转换的方法,即在运算过程中将表达式根据需要转换成另一个数据类型。一般形式为:(数据类型)表达式例如:(int)x%2当操作数为表达式时,则表达式应用括号括起来。例如:intix=7,iy=2;如果将ix/iy的值转换为double型,应写为:(double)(ix/iy),则先计算ix/iy的值,再将此值转换为double型,结果为3;如果写为:(double)ix/iy,则是先将ix转换成double型,然后再进行除法运算,其结果为3.5。,2.4赋值语句,1.赋值运算符:基本赋值运算符为“=”,其作用是先计算右侧表达式的值,再将计算结果赋给左侧的变量赋值表达式赋值表达式是指用赋值运算符将变量和表达式连接起来的式子。一般形式为:变量名=表达式说明:赋值运算符“=”是将右侧表达式的值赋给左侧的变量,赋值运算符左侧必须是变量,右侧是表达式赋值运算符“=”左右两侧的数据类型应一致。如果表达式的类型与左侧变量的类型不一致时,则先把右侧表达式的值转换为与左侧变量相同的数据类型,然后再赋值赋值表达式本身也是表达式,可以作为右侧的表达式出现,2.4赋值语句,3.赋值语句赋值表达式的后面加分号就是赋值语句,赋值语句执行赋值操作,一般形式为:变量名=表达式;4.复合赋值运算符基本赋值运算符与算术运算符或位运算符组合在一起构成复合赋值运算符,如:+=、-=、/=、*=、%=(复合算术运算符)=、i=3.12;i的值为3。将整型数据赋给单、双精度变量时,数值不变,但以浮点数形式存储到变量中。如:floatf;f=23;23.00000存储到f中。将一个double型数据赋给float变量中,截取前面7位有效数字,放到float变量的存储单元中。将一个float型数据赋给double型变量时,数值不变,有效位扩展到16位,在内存中以64位存储。,2.4赋值语句,5.类型转换字符型数据赋给整型变量时,将字符数据(8位)放到整型变量低8位若为unsignedchar,则高8位补0。若为有符号char,字符的最高位为0,则高8位补0,字符的最高位为1,则高8位补1。(符号扩展),C=376,C=376,2.4赋值语句,5.类型转换将一个int、short、long型数据赋给一个char型变量时,只将其低8位送到char型变量(即截断),如:inti=300;charc;c=i;,i=300,c,2.4赋值语句,5.类型转换将unsignedint型数据赋给longint型变量时,不存在符号扩展问题,只需将高位补0即可。将unsignedint型数据赋给int型变量时,将其内容直接送到int型变量中,但如数据范围超过32767,则会出现数据错误。,unsignedinti=65535,按int型输出,结果为-1,2.5复杂表达式,2.5.1自增、自减运算符自增、自减运算符为+和-,其作用是使变量的值增1或减1,结合方向是自右至左。它们的运算对象只能是变量,不能是常量或表达式。自增、自减运算符使用的格式有两种:前缀格式:运算符变量(如对变量i,+i或-i)后缀格式:变量运算符(如对变量i,i+或i-)不同之处在于前者是先执行变量加1(或减1)后,再使用变量的值;而后者是先使用变量的值后,再对变量加1(或减1)。对于变量i,i+和+i均表示“i=i+1”,两种格式在使用上没有任何区别,i-和-i也是一样。但是,当自增、自减运算符参与运算时,两种格式对表达式产生的结果影响是不一样的。例2.8自增、自减运算符的应用例2.9分析下面程序的运行结果,2.5复杂表达式,2.5.2关系运算符与关系表达式1.关系运算符关系运算符主要是比较两个操作数的大小,实际上是比较运算。C语言提供了6个关系运算符:(大于)、=(大于或等于)、=、=、=)的优先级相同,后两种(=、!=)相同。前4种运算符的优先级高于后2种运算符。关系运算符的优先级低于算术运算符,但高于赋值运算符。它们的关系如图所示,2.5复杂表达式,2.关系表达式用关系运算符将两个表达式连接起来的式子,就称为关系表达式。其一般格式为:表达式关系运算符表达式其中:关系运算符两侧的表达式可以是算术表达式、关系表达式、逻辑表达式、赋值表达式或字符表达式等。关系表达式的值是一个逻辑值,即“真”或“假”。当关系表达式成立时,其值为“真”;当关系表达式不成立时,其值为“假”。C语言规定:用1表示“真”,用0表示“假“。因此,关系表达式的运算结果为1或0。字符型数据也可以比较大小,是按照ASCII码值的大小进行比较的。例2.10关系表达式的运算,2.5复杂表达式,2.5.3逻辑运算符与逻辑表达式1.逻辑运算符逻辑运算符表示操作数之间的逻辑关系,C语言提供了三种逻辑运算符:!(逻辑非)、printf(“%c”,c1);则输出字符B。s格式符,输出一个字符串,常有以下几种用法:%s,例如:printf(%s,howdoyoudo.);原样输出该字符串(不包含双引号)。%ms,m表示输出的字符串占m列,如果字符串本身长度大于m,则m不起作用将字符串全部输出。若字符串的长度小于m,则在左端补空格;%-ms,如果字符串的长度小于m,则在m列范围内,字符串左对齐,右端补空格;%m.ns,输出占m列,但只取字符串中前n个字符,右对齐,左边补空格。%-m.ns,m和n的含义同上,但是输出n个字符左对齐,右边补空格。如果n大于m,则m自动取n值,即保证n个字符正常输出。例2.17使用修饰符m.n输出字符串,2.6基本输入输出函数,f格式符,用来输出实数(包括单、双精度数),以小数形式输出,有以下几种用法:%f,不指定数据宽度,按默认格式输出。整数部分全部输出,并输出6位小数。不足6位的后面补0;%m.nf,指定数据宽度占m列,其中有n位小数,如果数据长度小于m,则左补空格;%-m.nf与%m.nf基本相同,输出的数据左对齐,右端补空格。例2.18使用修饰符m.n输出实数例2.19使用修饰符+,0输出数据(两者不能联合使用)例2.20修饰符#示例例2.21使用修饰符l输出数据,2.6基本输入输出函数,使用printf函数时应注意:“%d”是格式说明的开始标记符号,它与修饰符、格式字符一起构成了格式说明部分,其中修饰符可省略。修饰符、格式字符一般要用小写(E、X、G除外)。输出转换:当格式字符与输出表达式类型不一致时,自动按指定格式输出,2.6基本输入输出函数,2.格式化输入函数scanf()格式:scanf(“格式控制字符串”,地址列表)功能:按照指定的格式从键盘读入数据,存入地址列表指定的存储单元中,并按回车键结束。返回值:正常时返回输入数据的个数,遇文件结束返回EOF;出错返回0。说明:1.格式控制字符串格式控制字符串包含两部分:格式控制字符和普通字符。格式字符有d、i、o、x、u、c、s、f、e等几种,其作用与printf函数中的相似,只不过后者是用于输出,前者是用于输入2.地址列表地址列表是由若干个地址组成的列表,可以是变量的地址、字符串的首地址、指针变量等,各地址之间用逗号分隔。变量的地址用取地址运算符“返回值:如果c是英文字母,则返回非零值,否则返回0。使用方法:isalpha(c)。例如:isalpha(A)返回值为非0。isalpha(54)返回值为0,因为字符6的ASCII为56。检查是否大写字母函数isupper函数原型:intisupper(charc);返回值:如果c是大写字母,则返回非零值,否则返回0。使用方法:isupper(c)。例如:isupper(b)返回值为0。isupper(A)返回值为非0。检查是否数字字符函数isdigit函数原型:intisdigit(charc);返回值:如果c是数字字符09,则返回非零值,否则返回0。使用方法:isdigit(c)。例如:isdigit(5)返回值为非0。isdigit(A)返回值为0。,2.6基本输入输出函数,检查是否字母、数字字符函数isalnum函数原型:intisalnum(charc);返回值:如果c是数字字符09或是英文字母,则返回非零值,否则返回0。使用方法:isalnum(c)。检查是否可打印字符函数isprint函数原型:intisprint(charc);返回值:如果c是可打印字符,其中包括空格字符,则返回非零值,否则返回0。使用方法:isprint(c)。检查是否可打印字符(空格除外)函数isgraph函数原型:intisgraph(charc);返回值:如果c是可打印且非空格字符,则返回非零值,否则返回0。使用方法:isgraph(c)。,2.6基本输入输出函数,五、其他常用函数相应的头文件为stdlib.h。随机数发生器函数rand函数原型:intrand(void)功能:产生伪随机整数序列,每次调用时产生一个032767之间的整数。使用方法:rand()。random函数是一个与rand函数相似的函数,其函数原型为:intrandom(intnum)。它的功

温馨提示

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

评论

0/150

提交评论