您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > 重庆出版社出版,李勇主编的大一C语言课程ppt第2章
C程序设计第2章数据类型、运算符及表达式•教学要求:通过本章的学习,[1]读者必须掌握C语言的基本数据类型(整型、字符型、实型),了解不同类型数据间的转换原则;[2]理解C语言中的常量、变量的定义与使用,运算符、运算符的优先级及结合规则;[3]重点掌握C语言表达式(赋值表达式、算术表达式、关系表达式、逻辑表达式、条件表达式、逗号表达式)的应用和操作。•教学提示:C语言中介绍了多种数据类型(如整型、实型、字符型数据)的定义与使用,在给不同类型的变量赋值时,要注意数据和变量的类型一定要匹配,若遇数据与变量类型不匹配时,可以运用C中的强制类型转换规则进行强制转换。另C语言中还介绍了多种运算符及其表达式,在求解表达式值时需按照运算符的优先级和结合性求解。•教学内容:本章首先介绍了常量、符号常量、变量的定义与使用;C语言数据类型的分类及不同类型数据间的转换与运算;然后通过各类运算符及表达式的若干例子详细讲解了C运算符的种类、运算优先级和结合性以及表达式的种类和求值规则。C程序设计第2章数据类型、运算符及表达式•2.1常量和变量2.1.1常量与符号常量所谓常量是指在程序运行的整个过程中其值始终不可改变的量称为常量。分类–整型常量:18、0、-13–实型常量:4.6、-1.86–字符常量:‘b’、‘g’常量一般从其字面形式即可判别。这种常量称为字面常量或直接常量用一个标识符代表一个常量的,称为符号常量,即标识符形式的常量C程序设计第2章数据类型、运算符及表达式一、常量与符号常量例2.1符号常量的使用。#definePRICE20main(){intnum,total;num=30;total=num*PRICE;printf(“total=%d”,total);}提示:P13C程序设计第2章数据类型、运算符及表达式2.1.2变量在程序的执行过程中其值可以变化的量称为变量。一个变量应该有一个名字,在内存中占据一定的存储单元。在该存储单元中存放变量的值。[实质]变量名实际上是一个符号地址,在对程序编译连接时由系统为每一个变量名分配一个内存地址。在程序中从变量中取值,实际上是通过变量名找到相应的内存地址,从其存储单元中读取数据。C程序设计第2章数据类型、运算符及表达式2.1.2变量用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列成为标识符(identifier)。简单地说,标识符就是一个名字。C语言规定标识符只能由字母、数字和下划线三种字符组成,并且第一个字母必须为字母或下划线。–合法:sum,average,total,_day,name,month,_1_3,BASIC,LEE_li–不合法:A**S.AA,¥54,#111,4e32,A6各个C编译系统都有自己规定的标识符长度,建议变量名的长度不要超过8个字符。在选择变量名和标识符时,应注意做到“见名知意”,即选有含意的英文单词(或其缩写)作标识符–如name、total、day、count、country、age等先定义,后使用:P14【例题:change.c】C程序设计第2章数据类型、运算符及表达式•2.2C语言的数据类型[引入]数据是程序处理的对象,数据可以依其本身的特点进行分类。数学中有整数、实数等概念,在日常生活中需要用字符串来表示人的姓名和地址,有些问题的回答只能是“是”或“否”(即逻辑“真”或“假”)不同类型的数据有不同的处理方法整数和实数可以参加算术运算,但实数的表示又不同于整数,要保留一定的小数位;逻辑数据可以参加“与”、“或”、“非”等逻辑运算C程序设计第2章数据类型、运算符及表达式C程序设计第2章数据类型、运算符及表达式2.2.1整型数据整型常量的表示方法–十进制整数:没有前缀;如456,-123,0–八进制整数:以0开头;如0123表示八进制数123,即(123)8其值为:1×82+2×81+3×80,等于十进制数83。-011表示八进制数-11,即十进制数-9–十六进制整数:以0x开头;如0x123,代表十六进制数123,即(123)16=1×162+2×161+3×160=256+32+3=291。-0x12等于十进制数-18C程序设计第2章数据类型、运算符及表达式整型变量–整型数据在内存中的存放形式»数据在内存中是以二进制形式存放的,如inti;i=10;–整型变量的分类»基本整型int:长度与编译器位数一致(例如在像turboc这样的16位编译器中,值的范围为-215~215-1;在像VC++这样的32位编译器中,值的范围为-231~231-1)»短整型shortint:16位»长整型longint:32位»unsigned:表示非负P16C程序设计第2章数据类型、运算符及表达式–整型变量的定义inta,c;unsignedshortd,e;longf;例2.2整型变量的定义与使用。main(){inta,b,c,d;unsignedu;a=10;b=-22;u=5;c=a+u;d=b+u;printf(“a+u=%d,b+u=%d\n”,c,d);}C程序设计第2章数据类型、运算符及表达式2.2.2实型数据实型常量的表示方式–十进制小数形式:由数字和小数点组成(注意必须有小数点)。如.456、456.、456.0、0.0都是十进制小数形式–指数形式:字母e(或E)之前必须有一个数字,且e后面的指数必须为整数例如123.456可以表示为123.456e0、12.3456e1、1.23456e2、0.123456e3、0.0123456e4等»规范化指数形式:在字母e(或E)之前的小数部分中,小数点左边应有一位(且只能有一位)非零的数字,如2.213e2、3.0888E5»TurboC用指数形式输出时(使用格式说明符%e),是按规范化指数形式输出的P17【举例】C程序设计第2章数据类型、运算符及表达式实型变量–实型变量的分类–实型数据的舍入误差(例2.3,P18)实型常量的类型–C编译系统将实型常量作为双精度来处理–一个实型常量可以赋给一个float型(系统将按双精度数据存储(占64位)和运算,得到一个双精度数,然后取前7位赋给实型变量f)、double型或longdouble变量。P18【举例】C程序设计第2章数据类型、运算符及表达式2.2.3字符型数据一、字符常量–C的字符常量是用单引号括起来的一个字符–C中还允许使用一种特殊形式的字符常量,既以“\”开头的字符序列——转义字符。详见表2.2»反斜杠(\)后面的字符转换成另外的意义。如‘\n’中的“n”不代表字母n而作为“换行”符»反斜杠可以和8进制或16进制数值结合起来使用,以表示相应于该数值的ASCII型——P26【举例】–例2.4——P19【板书】C程序设计第2章数据类型、运算符及表达式字符变量–字符型变量用来存放字符常量,请注意只能放一个字符–字符变量定义的关键字:char–可以向字符变量赋值字符常量或者字符常量的ASCII码P245–在所有的编译系统中都规定以一个字节来存放一个字符,或者说一个字符变量在内存中占一个字节–例2.5向字符变量赋以整数main(){charc1,c2;c1=100;c2=101;printf(″%c%c\n″,c1,c2);printf(″%d%d\n″,c1,c2);}C程序设计第2章数据类型、运算符及表达式字符串常量–字符串常量是一对双引号括起来的字符序列。如″howoldareyou?″,″CHINA″,″n″,″$12.34″–假设b被指定为字符变量:charb;b=ˊaˊ;是正确的。而b=″a″;是错误的。b=″CHINA″也是错误的。不能把一个字符串赋给一个字符变量。–C语言中没有专门设置存储字符串的变量C程序设计第2章数据类型、运算符及表达式•2.3运算符和表达式2.3.1C运算符简介算术运算符(+-*/%)关系运算符(====!=)逻辑运算符(!&&||)位运算符(~|ˆ&)赋值运算符(=及其扩展赋值运算符)条件运算符(?:)逗号运算符(,)指针运算符(*和&)求字节数运算符(sIzeof)强制类型转换运算符((类型))分量运算符(.→)下标运算符([])其他C程序设计第2章数据类型、运算符及表达式2.3.2算术运算符和算术表达式1.基本的算术运算符–+(加法运算符,或正值运算符。如2+8、+6)–-(减法运算符,或负值运算符。如6-2、-4)–*(乘法运算符。如3*7)–/(除法运算符。如5/3)»两个整数相除的结果为整数,如5/3的结果值为1,舍去小数部分»如果除数或被除数中有一个为负值,则舍入的方向是不固定的。例如,-5/3在有的机器上得到结果-1,有的机器则给出结果-2。多数机器采取“向零取整”的方法,即5/3=1,-5/3=-1,取整后向零靠拢【演示】–%(模运算符,或称求余运算符,%两侧均应为整型数据,如7%5的值为2)–如果参加+,-,*,/运算的两个数中有一个数为实数,则结果是double型,因为所有实数都按double型进行运算C程序设计第2章数据类型、运算符及表达式2.算术运算符和运算符的优先级与结合性–用算术运算符和括号将运算对象(也称操作数)连接起来、符合C语法规则的式子,称C算术表达式。»例如a*b/c-1.5+’a’–C语言规定了运算符的优先级。在表达式求值时,先按运算符的优先级别高低次序执行»如表达式a–b*c,b的左侧为减号,右侧为乘号,而乘号优先于减号,因此,相当于a–(b*c)。如果在一个运算对象两侧的运算符的优先级别相同,如a–b+c,则按规定的“结合方向”处理–C规定了各种运算符的结合方向(结合性),算术运算符的结合方向为“自左至右”,即先左后右,称为“左结合性”»在a-b+c中,b先与减号结合,执行a–b的运算,再执行加c的运算C程序设计第2章数据类型、运算符及表达式各类数值型数据(整型、实型、字符型)的混合运算–自动动转换(隐式转换)»自动转换发生在不同类型数据进行混合运算时,由编译系统自动完成。转换规则如图2.4所示:»(1)类型不同,先转换为同一类型,然后进行运算。»(2)图中纵向的箭头表示当运算对象为不同类型时转换的方向。可以看到箭头由低级别数据类型指向高级别数据类型,即数据总是由低级别向高级别转换。即按数据长度增加的方向进行,保证精度不降低。»(3)图中横向向左的箭头表示必定的转换(不必考虑其它运算对象)。如字符数据参与运算必定转化为整数,float型数据在运算时一律先转换为双精度型,以提高运算精度(即使是两个float型数据相加,也先都转换为double型,然后再相加)。»(4)赋值运算,如果赋值号“=”两边的数据类型不同,赋值号右边的类型转换为左边的类型。这种转换是截断型的转换,不会四舍五入。C程序设计第2章数据类型、运算符及表达式–3.强制类型转换运算符»可以利用强制类型转换运算符将一个表达式转换成所需类型(double)a/*将a转换成double类型*/(int)(x+y)/*将x+y的值转换成整型*/(float)(7%4)/*将7%4的值转换成float型*/»其一般形式为(类型名)(表达式)注意,表达式应该用括号括起来。如果写成(int)x+y则只将x转换成整型,然后与y相加»在强制类型转换时,得到一个所需类型的中间变量,原来变量的类型未发生变化例如(int)x/*不要写成int(x)*/如果x原指定为float型,进行强制类型运算后得到一个int型的中间变量,它的值等于x的整数部分,而x的类型不变(仍为float型)C程序设计第2章数据类型、运算符及表达式例2.6强制类型转换【演示】main(){floatx;inti;x=2.4;i=(int)x;printf(“x=%f,i=%d”,x,i);}运行结果如下:x=2.400000,i=2x类型仍为float型,值仍等于2.4。C程序设计第2章数据类型、运算符及表达式2.3.
本文标题:重庆出版社出版,李勇主编的大一C语言课程ppt第2章
链接地址:https://www.777doc.com/doc-3447363 .html