C语言程序设计-第2章-数据描述及数据运算.ppt

上传人(卖家):三亚风情 文档编号:3376970 上传时间:2022-08-25 格式:PPT 页数:106 大小:1.85MB
下载 相关 举报
C语言程序设计-第2章-数据描述及数据运算.ppt_第1页
第1页 / 共106页
C语言程序设计-第2章-数据描述及数据运算.ppt_第2页
第2页 / 共106页
C语言程序设计-第2章-数据描述及数据运算.ppt_第3页
第3页 / 共106页
C语言程序设计-第2章-数据描述及数据运算.ppt_第4页
第4页 / 共106页
C语言程序设计-第2章-数据描述及数据运算.ppt_第5页
第5页 / 共106页
点击查看更多>>
资源描述

1、 程序设计技术基础-C语言第二章 C语言程序的数据描述及数据运算 2.1 C语言的基本元素 2.2 初识数据类型 2.3 C语言的运算符和表达式 2.4 类型转换2022-8-82程序设计技术基础-C语言2.1.1 字符集 字符是组成语言的最基本的元素。C语言字符集(即ASCII字符集)由字母、数字、空格、标点和特殊字符组成(见附录B)。主要分为以下几类:(1)大小写英文字母:az,AZ;(2)数字:09;(3)键盘符号:见书表2-1所示;(4)转义字符:以字符“”开头,后跟一个或几个字符的字符序列,通常用来表示键盘上的控制符或特殊符号。见书表2-2所示;2022-8-83程序设计技术基础-C

2、语言2.1.2 关键字 所谓“关键字”就是已被 C语言编译工具本身使用,不能用作其它用途使用的字。主要用于构成语句,进行存储类型和数据类型定义。所有的关键字均由小写字母组成。根据关键字的作用,可分为数据类型关键字、控制语句关键字、存储类型关键字、其它关键字四类。2022-8-84程序设计技术基础-C语言2022-8-85short、int、long、signed、unsigned、float、double、char、struct、enum、union、voidif、else、switch、case、default、for、do、while、break、continue、goto、returna

3、uto、static、extern、registerconst、sizeof、typedef、volatile关键字程序设计技术基础-C语言2.1.3 标识符 所谓“标识符”是用户自己定义的一种字符序列,在计算机高级语言中,用来表示程序中需要辨认的对象名称。C语言规定,标识符是由字母或下画线开头的字母、数字、下画线组成的一串符号。下面列出的标识符是合法的:sum,day1,Yang,_total,MONTH,Student_name_2 下面是不合法的标识符:2_day,list.er,$234,#3Df,last-342022-8-86程序设计技术基础-C语言2022-8-8701注意在标识

4、符中,大写字母和小写字母表示两个不同的字符。02注意03注意C语言规定,用户选取的标识符不能是C语言规定的关键字。标识符的命名应尽量有相应的意义,以便阅读理解,做到“见名知意”。即选取有含义的英文单词或其缩写作为标识符,例如:sum,num等。程序设计技术基础-C语言2.2 初识数据类型 指定数据类型,主要是为了对数据分配存储单元,包括存储单元的长度(占多少字节)以及数据的存储形式。对不同数据类型的数据分配不同的存储单元长度和存储形式。不同数据类型的数据对应的运算种类也不同。在语言中,数据类型可分为:基本数据类型、构造数据类型、指针类型、空类型四大类。2022-8-88程序设计技术基础-C语言

5、2.2 初识数据类型2022-8-89程序设计技术基础-C语言2.2.1 常量和变量 数据按其取值是否可以改变分为常量和变量两种。1.常量在程序执行过程中,其值不发生改变的量称为常量。它们可与数据类型结合起来进行分类。在程序中,常量是可以不经说明而直接引用的。2022-8-810程序设计技术基础-C语言常用的常量有以下几类:(1)字面常量(直接常量):整型常量:100、0、-15;实型常量:12.34、-0.5、3.24e5、-0.34E-6;字符型常量:A、8、#、t、n、101、x41;(2)字符串常量:由一对双引号()括起的字符序列。例如:BOY,C program,12.5 等。202

6、2-8-811程序设计技术基础-C语言常用的常量有以下几类:(3)符号常量:用#define命令,指定用一个符号名称代表一个常量。符号常量在使用之前必须先定义。符号常量定义的一般形式为:#define 标识符 常量 经过定义,以后在程序中所有出现该标识符的地方均代表该常量。2022-8-8122022-8-813#define PI 3.14159#includeint main()double c,r;r=5;c=2*PI*r;printf(c=%lfn,c);return 0;【例2-1】求圆的周长定义符号常量定义符号常量PI定义变量、定义变量、用用PI代替代替3.14159程序运行的结果

7、为:程序运行的结果为:c=31.415900程序设计技术基础-C语言2022-8-81401好处使用符号常量的好处使用符号常量的好处书写简单不易出错书写简单不易出错。02好处03好处使用符号常量的好处使用符号常量的好处含义清楚。含义清楚。使用符号常量的好处使用符号常量的好处修改程序方便修改程序方便。程序设计技术基础-C语言2.2.1 常量和变量 2.变量 在程序运行过程中,其值可以变化的量,称为变量。每一个变量都有一个名字,称为变量名,以便被引用。一个变量在内存中占据一定的存储空间,在该存储空间中存放一个属于某种数据类型的数据,称为变量的值。变量必须先定义,后使用。变量的定义一般放在函数体的开

8、头部分。2022-8-815程序设计技术基础-C语言2.2.1 常量和变量 定义变量的一般形式为:类型说明符 变量名标识符,变量名标识符,.;注意:类型说明符与变量名标识符之间要用空格隔开,变量名标识符之间用逗号隔开,末尾必须加分号。2022-8-816程序设计技术基础-C语言在定义时指定该变量的名字和数据类型。在此请注意区分变量名和变量值这两个不同的概念,如下图中a是变量名,3是变量a的值,即存放在变量a的内存单元中的数据。变量名实际上是以一个名字代表的一个存储地址,在对程序编译连接时由系统给每一个变量名分配对应的内存地址。在程序运行时从变量中取值,实际上是通过变量名找到相应的内存地址,通过

9、内存地址,从其相对应的存储单元中读取数据。2022-8-8172022-8-818#includeint main()int m;/*定义变量m*/m=23;/*给变量m赋值为23*/printf(the first value is:%dn,m);/*输出此时m的值*/m=-46;/*给变量m赋值为-46*/printf(the second value is:%dn,m);/*输出此时m的值*/return 0;【例2-2】变量举例 程序运行结果:程序运行结果:the first value is:23the second value is:-46程序设计技术基础-C语言2022-8-81

10、901目的保证程序中变量名使用得正确。02目的03目的在编译时为每一个变量分配相应的存储单元。指定每一变量属于某一种类型,这就便于在编译时检查该变量所进行的运算是否合法。变量要“先定义,后使用”,这样做的目的程序设计技术基础-C语言2.2.2 整型数据1.整型常量 C语言中的整型常量习惯用我们所熟悉的十进制数来表示,但是实际上它们都是以二进制形式存储在计算机内存中的。二进制数表示不直观不方便,因此有时也将其表示为八进制数和十六进制数,编译器会自动将其转换为二进制形式存储。2022-8-820程序设计技术基础-C语言(1)整型常量的前缀:十进制整常数:十进制整常数没有前缀。其数码取值为09。例如

11、:17、-31。八进制整常数:八进制整常数必须以数字0开头,即以0作为八进制数的前缀。其数码取值为07。例如:021。十六进制整常数:十六进制整常数以0X或0 x开头,即以0X或0 x作为前缀。其数码取值为09,AF或af。例如:0 x11。请注意在程序中是根据前缀来区分各种进制数的,因此在书写常数时不要把前缀弄错造成结果的不正确。2022-8-821程序设计技术基础-C语言(2)整型常量的后缀 整型常量有基本整型和长整型、无符号数和有符号数之分。如果要表示的数超过了上述取值范围,就必须用长整型数来表示。长整型数是用后缀“L”或“l”来表示的。无符号数也可用后缀表示,整型常数的无符号数的后缀为

12、“U”或“u”。2022-8-822程序设计技术基础-C语言不同类型的整型常量的表示形式:有符号整型常量:默认的整型(int)定义为有符号数。如:-31、17、021。无符号整型常量:不能表示小于0的数。如:17u、021u、0 x11u。有符号长整型常量如:65536L、0200000L、0 x10000L。无符号长整型常量:要用后缀LU、Lu、lU、lu来表示。如:65536LU、0200000LU、0 x10000LU。2022-8-823程序设计技术基础-C语言2.整型变量 数据的表示方法有多种多样,但是所有数据在内存中都是以二进制形式存放的。在对程序编译连接时系统会给每个变量分配一个

13、内存空间。2022-8-824程序设计技术基础-C语言(1)整型变量的类型 有符号基本型:类型说明符为int。有符号短整型:类型说明符为short int或short。有符号长整型:类型说明符为long int或long。无符号基本型:类型说明符为unsigned int。无符号短整型:类型说明符为unsigned short int或unsigned short。无符号长整型:类型说明符为unsigned long int或unsigned long。2022-8-8252022-8-826#include int main()printf(各种数据类型长度:n);printf(整型:-%d

14、n,sizeof(int);printf(长整型:-%dn,sizeof(long);printf(短整型:-%dn,sizeof(short int);return 0;【例2-3】各种数据类型的长度 由于同种数据类型在由于同种数据类型在不同的平台其占字节数不不同的平台其占字节数不尽相同,尽相同,可以可以使用关键字使用关键字“sizeof”来获得变量或来获得变量或者数据类型的长度者数据类型的长度。程序运行结果:程序运行结果:各种数据类型长度:各种数据类型长度:整型整型:-4长整型长整型:-4短整型短整型:-2程序设计技术基础-C语言(2)整型变量的定义和整型变量赋初值 例如:short x,

15、y,z;/*定义x、y、z为短整型变量*/long m,n;/*定义m、n为长整型变量*/unsigned int a,b;/*定义a、b为无符号整型变量*/2022-8-827程序设计技术基础-C语言 C语言中经常要对一些变量赋初值,以便使用变量。给变量赋初值的方法有以下两种。定义变量的同时赋初值。例如:long a=37000000;/*定义a为长整型变量,并赋初值为37000000*/也可以给被定义的变量的一部分赋初值。例如:short m=8,n,t;定义了三个整型变量m、n、t,只对m赋初值8。2022-8-828程序设计技术基础-C语言 如果对几个变量赋同样的初值,应该这样表示:i

16、nt a=5,b=5,c=5;表示变量a、b、c的初值都为5,而不能写成:int a=b=c=5;错!2022-8-829程序设计技术基础-C语言先定义,再赋初值。例如:int x,y,z;/*定义x、y、z为整型变量*/y=45;/*给变量y赋初值45*/z=6;/*给变量z赋初值6*/并不是所有定义的变量都要赋初值,可以只给其中的某些变量赋初值。2022-8-830程序设计技术基础-C语言(3)整型数据在计算中遇到的问题 由前面的知识我们知道,不同的数据类型都有各自的取值范围。如果在程序运算过程中结果超出取值范围,会出现什么情况呢?2022-8-8312022-8-832#includei

17、nt main()short int m,n;m=32767;n=m+1;printf(m=%dnn=%dn,m,n);return 0;【例2-4】整型数据的溢出数据类型选择不正确,数据类型选择不正确,会产生溢出错误。会产生溢出错误。程序运行结果为:程序运行结果为:m=32767n=-32768程序设计技术基础-C语言2.2.3 实型数据1.实型常量 实型常量也称为实数或者浮点数。在语言中,实数只采用十进制。它有两种形式:十进制小数形式和指数形式。(1)十进制小数形式。由数码0 9和小数点组成。例如:0.0、25.0、0.13、300.、-.5等均为合法的实数。注意,必须有小数点。2022-

18、8-833程序设计技术基础-C语言(2)指数形式:由十进制数,加阶码标志“e”或“E”以及阶码(只能为整数,可以带符号)组成。因为程序编辑时不能输入上下角标,所以用e或E代表以10为底的指数。e的左边是数值部分,不能省略;e的右边是指数部分,也不能省略。指数的一般形式为:a E n(a为十进制数,n为十进制整数阶码)如:3.4e-6(相当于3.610-6)、-2.5e5(相当于-2.5105)、-3e-4(相当于-310-4)、6E3(相当于610-3)等。2022-8-834程序设计技术基础-C语言2.实型变量(1)实型变量的类型 实型变量分为:单精度(float型)、双精度(double型

19、)和长双精度(long double型)三类。下表为各类实型数据的特点。2022-8-835数据类型数据类型字节数(二进制数位字节数(二进制数位数)数)有效数字位数有效数字位数取值范围取值范围float4(32)67(十进制)(十进制)-3.410-383.41038double8(64)1516(十进制)(十进制)-1.710-3081.710308long double64/80/96与编译器有关与编译器有关与编译器有关与编译器有关程序设计技术基础-C语言(2)实型变量的定义 实型变量在使用前也必须加以定义。例如:float a,b;/*a、b为单精度型变量*/double x,y;/*x

20、、y为双精度型变量*/(3)实型数据在计算中遇到的问题 用有限的存储单元不可能完全精确地存储一个实数。2022-8-8362022-8-837#includeint main()float a;double b;a=123456.789e4;b=123456.789e4;printf(a=%fnb=%lfn,a,b);return 0;【例2-5】舍入误差将将a、b的值以小数形式的值以小数形式输出浮点数输出浮点数程序执行的结果为:程序执行的结果为:a=1234567936.000000b=1234567890.000000由于舍入误差的原因,由于舍入误差的原因,进行计算时要避免一个进行计算时要

21、避免一个较大实数和一个较小实较大实数和一个较小实数相加减。数相加减。程序设计技术基础-C语言2.2.4 字符型数据1.字符常量(1)普通的字符常量 普通的字符常量是用单引号()括起来的一个字符。如a、b、=、+、?等都为字符常量。字符常量只能是一个字符,但并不是用单引号括起来的任意一个字符,程序都能识别。例如代表圆周率的在程序中是不能识别的,只能使用系统的字符集中的字符,目前大多数系统采用ASCII码字符集中的字符。2022-8-838程序设计技术基础-C语言 字符常量是以整数形式(字符的ASCII代码)存放在内存单元中的。例如:大写字母A的ASCII代码是十进制数65,二进制形式为10000

22、01。数字字符1的ASCII代码是十进制数49,二进制形式为0110001。需要注意的是:字符1和整数1是不同的概念。2022-8-839程序设计技术基础-C语言(2)特殊的字符常量转义字符 ASCII码字符集中的不可显示的字符就可以用转义字符来表示。例如:退格(以b表示)、回车(以r表示)等。转义字符是可以用于控制等的特殊符号,不同于字符原有的意义,故称“转义”字符。例如,在前面各例题中printf函数中用到的“n”就是一个转义字符,其意义是“换行”。2022-8-840程序设计技术基础-C语言使用转义字符时需要注意以下问题:转义字符中只能使用小写字母,每个转义字符只能看作一个字符。在C程序

23、中,使用不可打印字符时,通常用转义字符表示。v垂直制表和f 换页符对屏幕没有任何影响,但会影响打印机执行响应操作。转义字符0表示空字符NULL,它的值是0。而字符0的ASCII码值是48。因此,空字符0不是字符0。另外,空字符不等于空格字符,空格字符的ASCII码值为32。2022-8-841程序设计技术基础-C语言使用转义字符时需要注意以下问题:转义字符也可以出现在字符串中,但只作为一个字符看待。如果“”之后的字符和它不构成转义字符,则“”不起转义作用将被忽略。如:printf(aNbcnDEFn);输出:aNbc DEF2022-8-8422022-8-843#include int ma

24、in()printf(CtC+tJavanC first appeared!n);return 0;【例2-6】转义字符的应用程序运行结果为:程序运行结果为:C C+JavaC first appeared!程序设计技术基础-C语言2.字符变量 字符变量是用数据类型符char定义字符变量的。字符变量中存放的是字符常量,其取值是字符常量,即单个字符。定义字符变量的一般形式为:char 标识符1,标识符2,标识符n;例如:char c1,c2,ch;c1=A;c2=B;2022-8-844程序设计技术基础-C语言 字符变量实际上是一个字节的整型变量,虽然称为字符变量,但是可以把0127之间的整数赋

25、给一个字符变量。例如字符A的十进制ASC码是65,字符B的十进制ASC码是66。对字符变量c1、c2赋值:c1=A;c2=B;,实际上是在变量c1、c2的两个内存单元中存放整数65和66的二进制代码,如下图所示。2022-8-845程序设计技术基础-C语言 字符型数据有无符号和有符号之分,其存储空间和值的范围如下表所示。2022-8-846类型类型字节数字节数取值范围取值范围有符号字符型有符号字符型(signed char)1-128127即即-27(27-1)无符号字符型无符号字符型(unsigned char)10255即即0(28-1)程序设计技术基础-C语言3.字符变量与整型变量的互换

26、 由于字符型数据与整型数据在存储方式上的相似性,使得两者之间可以通用。因此C语言允许对整型变量赋予字符值,也允许对字符变量赋予整型值。在输出时,允许把字符变量按整型形式输出,也允许把整型变量按字符形式输出。但是,由于整型变量占2个或4个字节,字符变量占1个字节,当整型量按字符量处理时,只有低8位数据参与处理,也就是说,字符变量只能表示0255之间的整数。2022-8-847程序设计技术基础-C语言 需要注意的是,对于值为128255这一部分,最高位为1,用“%d”格式输出的数值会得到负数。例如:char a=158;printf(%dn,a);运行后的结果为-98。这时可以将变量定义为无符号字

27、符变量,使最高位不表示符号。例如:unsigned char a=158;printf(%dn,a);运行结果为158。2022-8-8482022-8-849#includeint main()char c1,c2;int m,n;c1=65;c2=66;m=a;n=b;printf(%c%cn,c1,c2);printf(%d%dn,c1,c2);printf(%d%cn,m,m);printf(%d%cn,n,n);return 0;【例2-7】字符数据与整型数据互换将整数将整数65赋给字符变量赋给字符变量c1将整数将整数66赋给字符变量赋给字符变量c2将字符将字符a赋给整型变量赋给整型

28、变量m 将字符将字符b赋给整型变量赋给整型变量n程序运行结果为:程序运行结果为:A B65 6697 a98 b2022-8-850#includeint main()char ch1,ch2,ch3,ch4;ch1=a;ch2=B;printf(ch1=%c,ch2=%cn,ch1-32,ch2+32);printf(ch3=%c,ch4=%cn,a-32,B+32);return 0;【例2-8】字符数据的算术运算字母的大小写转换字母的大小写转换程序运行结果为:程序运行结果为:ch1=A,ch2=bch3=A,ch4=b程序设计技术基础-C语言2.3 C语言的运算符和表达式 C语言的特点之

29、一就是运算符多,涉及的运算范围广,把除了控制语句和输入输出以外几乎所有的基本操作都作为运算处理,例如将赋值符“=”作为赋值运算符、方括号作为下标运算符等。C语言的运算符在使用时形式和规则也是多样的。2022-8-851程序设计技术基础-C语言2.3.1运算符及表达式的分类1.根据运算符所需要的操作对象(操作数)的个数,运算符可分为:2022-8-852类型类型作用作用运算符举例运算符举例单目运算符单目运算符仅对一个运算对象进行操作仅对一个运算对象进行操作!+-sizeof双目运算符双目运算符对两个运算对象进行操作对两个运算对象进行操作+-*/%三三目运算符目运算符对对三三个运算对象进行操作个运

30、算对象进行操作?:?:程序设计技术基础-C语言2.根据运算符的功能分类可分为:2022-8-853类型类型作用作用运算符运算符算术运算符算术运算符用于各类数值运算用于各类数值运算正值(正值(+)、负值()、负值(-)、加)、加(+)、减、减(-)、乘、乘(*)、除除(/)、求余、求余(或称模运算,或称模运算,%)自增、自减运算符自增、自减运算符自增自增1、自减、自减1自增(自增(+)、自减()、自减(-)关系运算符关系运算符用于比较运算用于比较运算大于大于()、小于、小于(=)、小于等于小于等于(=)、不等于不等于(!=)逻辑运算符逻辑运算符用于逻辑运算用于逻辑运算与与(&)、或、或(|)、非

31、、非(!)位操作运算符位操作运算符按二进制位进行运算按二进制位进行运算位与位与(&)、位或、位或(|)、位非、位非()、位异或、位异或()、左、左移移()程序设计技术基础-C语言2.根据运算符的功能分类可分为:2022-8-854类型类型作用作用运算符运算符赋值运算符赋值运算符用于赋值运算用于赋值运算分为简单赋值分为简单赋值(=)复合算术运算赋值复合算术运算赋值(+=、-=、*=、/=、%=)复合位运算赋值复合位运算赋值(&=、|=、=、=、.)程序设计技术基础-C语言3.表达式和运算符的优先级、结合性 表达式:是由常量、变量、函数和运算符组合起来的式子,是求值的规则。表达式求值按运算符的优先

32、级和结合性规定的顺序进行。一个表达式有一个值及其类型,它们等于计算表达式所得结果的值和类型。运算符的优先级:C语言中,运算符的运算优先级共分为15级。1级最高,15级最低。在表达式中,优先级较高的先于优先级较低的进行运算。而在一个操作数两侧的运算符优先级相同时,则按运算符的结合性所规定的结合方向处理。2022-8-855程序设计技术基础-C语言3.表达式和运算符的优先级、结合性 运算符的结合性:C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左)。例如算术运算符的结合性是自左至右,即先左后右。而自右至左的结合方向称为“右结合性”。最典型的右结合性运算符是赋值运算符。一

33、般单目运算符、三目运算符、赋值运算符及其扩展运算符的结合性是“右结合”;其余运算符的结合性是“左结合”。2022-8-856程序设计技术基础-C语言2.3.2 算术运算符及算术表达式1.算术运算符(1)正值运算符“+”:为单目运算,如+a,+1等。(2)负值运算符“-”:为单目运算,如-a,-1等。(3)加法运算符“+”:为双目运算符,即应有两个量参与加法运算。如a+b,1+2等。(4)减法运算符“-”:为双目运算符,即应有两个量参与减法运算。如a-b,5-3等。2022-8-857程序设计技术基础-C语言(5)乘法运算符“*”:为双目运算。注意乘号用“*”表示,且不能省略。例如:数学式4ac

34、应该写成4*a*c。(6)除法运算符“/”:为双目运算。参与运算量均为整型时,结果也为整型向零取整。如:1/2的值是0,而不是0.5,不会四舍五入,只取整数部分的值(整除)。如果运算量中至少有一个是实型,则结果为双精度实型。如:1.0/2的值是0.5。(7)求余运算符(模运算符)“%”:为双目运算。求余运算的结果等于两数相除后的余数。要求参与运算的量均为整型。有负整数参与运算的情况下,一般的处理原则为:先按其绝对值求余数(|r|%|s|),然后取被除数r的符号作为余数的符号。2022-8-8582022-8-859#include int main()printf(-3/5=%d,-3./5=

35、%fn,-3/5,-3./5);printf(9%4=%d,4%-7=%d,-4%7=%dn,9%4,4%-7,-4%7);return 0;【例2-9】算术运算举例程序运行结果为:程序运行结果为:-3/5=0,-3./5=-0.6000009%4=1,4%-7=4,-4%7=-4程序设计技术基础-C语言2.算术表达式 用算术运算符和括号将运算对象(也称操作数)连接起来的、符合C语法规则的式子,称为算术表达式。在表达式中可以使用一对“()”或多对“()”运算符改变运算的优先顺序。运算对象可以是常量、变量、函数等。例如:a*b/(c-(1.5+a)是合法的C算术表达式 a*b/c-(1.5+a)

36、是不合法的C算术表达式2022-8-860程序设计技术基础-C语言【例2-10】使用公式 C=(F-32)计算华氏温度与摄氏温度转换。用算术表达式将公式表达出来。则表达式可以写成:C=5.0/9*(F-32)但不能写成:C=5/9*(F-32)这样写,5/9的值为0。因此,导致最后的计算结果为0。2022-8-861程序设计技术基础-C语言2.3.3 自增、自减运算符及自增、自减表达式 自增(+)、自减(-)运算符是单目运算符,具有右结合性。其作用是使变量的值加1或减1。它的优先级高于双目算术运算符,与单目算术运算符同级。如表下所示。2022-8-862运算符运算符名称名称用法用法含义含义+自

37、增自增运算符运算符(单目)单目)i+后后置自增,先使表达式的值置自增,先使表达式的值为为i的值,的值,i的值再加的值再加1+i 前前置自增,置自增,i的值先加的值先加1,再,再使表达式的值为使表达式的值为i的值的值-自减自减运算符运算符(单目)单目)i-后后置自减,先使表达式的值置自减,先使表达式的值为为i的值,的值,i的值再减的值再减1-i 前前置自减,置自减,i的值先减的值先减1,再,再使表达式的值为使表达式的值为i的值的值程序设计技术基础-C语言 实际上i+和+i就相当于“i=i+1”;i-和-i就相当于“i=i-1”。在做i=i+1或i=i-1这两种操作时,变量i被称为“计数器”,用来

38、记录完成某一操作的次数。C语言为这种计数器操作提供了两个更为简洁的运算符,即i=i+1可写成i+或+i;i=i-1可写成i-或-i。2022-8-863程序设计技术基础-C语言使用自增、自减运算符时应注意以下几点:(1)注意运算符的操作对象。自增、自减运算符的操作对象只能是变量,而不能是常量或表达式。例如:6-、+(a*2)、+(-i)都是错误的。因为自增、自减运算符具有对操作对象重新赋值的功能,而常量、表达式无存储单元可言,当然不能被赋值做自增、自减运算。2022-8-864程序设计技术基础-C语言(2)区分前置形式、后置形式的意义。即前置运算是“先变后用”,而后置运算是“先用后变”。若不赋

39、值,则变量前置自增自减和后置自增自减结果相同。例如:int x=8;x+;printf(x=%d,x);/*运算结果:x=9*/int x=8;+x;printf(x=%d,x);/*运算结果:x=9*/2022-8-865程序设计技术基础-C语言若有赋值,则被赋值的变量的值不同。例如:int x=8,y;y=x+;printf(x=%d,y=%d,x,y);/*运算结果:x=9,y=8*/int x=8,y;y=+x;printf(x=%d,y=%d,x,y);/*运算结果:x=9,y=9*/2022-8-866程序设计技术基础-C语言(3)自增自减运算常用于循环语句中,使循环变量自动加(减

40、)1;也用于指针变量,使指针指向下一个地址。(4)注意运算符的副作用。例如i+j,是理解为(i+)+j呢?还是理解为i+(+j)呢?初学者应谨慎使用+和-运算符。程序清晰易读,不致引起歧义。2022-8-867程序设计技术基础-C语言2.3.4 赋值运算符及赋值表达式 在C程序中最常用到的是赋值运算,赋值运算中的赋值运算符用于给变量赋值,它是双目运算符,优先级仅高于逗号运算符,具有右结合性。赋值运算符包括基本赋值运算符和复合赋值运算符两种。2022-8-868程序设计技术基础-C语言1.基本赋值运算符 赋值符号“=”就是基本赋值运算符。赋值运算符的作用:将运算符右端的值赋给运算符左边的变量,实

41、际上是将特定的值写到变量所对应的内存单元中。例如a=3,就是把3赋给变量a。2022-8-869程序设计技术基础-C语言2.复合赋值运算符 在赋值号“=”之前加上其他运算符,可以构成复合赋值运算符,如表2-7所示。C语言采用这种复合运算符可以简化程序,以便提高效率。2022-8-870运算符运算符名称名称用法用法等价于等价于+=加赋值运算符加赋值运算符a+=3a=a+3-=减赋值运算符减赋值运算符a-=4a=a-4*=乘赋值运算符乘赋值运算符a*=9a=a*9/=除赋值运算符除赋值运算符a/=5a=a/5%=取余赋值运算符取余赋值运算符a%=6a=a%6程序设计技术基础-C语言使用复合赋值运算

42、符时要注意:复合运算符在书写时,两个运算符之间不能有空格。如果运算符右边是一个表达式,则相当于它有括号。例如以下3种写法是等价的:x%=y+3 等价于 x%=(y+3)等价于 x=x%(y+3)。不要理解成 x=x%y+3。2022-8-8712022-8-872#include int main()int a=8;a+=a*=a/=a-6;printf(a=%dn,a);return 0;【例2-11】复合赋值运算符举例相当于相当于a=a/(a-6);a=a*a;a=a+a程序运行结果为:程序运行结果为:a=32程序设计技术基础-C语言3.赋值表达式 由赋值运算符将一个变量和一个表达式连接起

43、来的式子称为“赋值表达式”。赋值表达式的一般形式为:变量=表达式2022-8-873程序设计技术基础-C语言说明:(1)运算符的左侧只能是一个变量或赋值表达式,不能是常量或其它表达式,而右侧可以是常量、赋过值的变量或表达式。赋值表达式的作用是将运算符右端表达式的值赋给运算符左边的变量。因此赋值表达式具有计算和赋值的双重功能。例如下列表达式是错误的:5=a、3=a+b、x+y=5*6、c=a+b=32022-8-874程序设计技术基础-C语言(2)一个变量可以先后被多次赋值,后来赋的值总将变量中原有的值覆盖,变量仅保存最后一次的赋值。(3)赋值表达式不同于数学上的“等式”。a=b和b=a在数学上

44、是等价的,但在C语言中a=b表示将变量b的值赋给变量a,而b=a正相反。(4)在赋值表达式中的“表达式”又可以是一个赋值表达式。例如:a=b=8表达式中有两个“=”运算符,优先级相同,因为具有右结合性,所以先算b=8,赋值表达式b=8的值为8,再将8赋给a。2022-8-875程序设计技术基础-C语言(5)赋值运算符的优先级和结合性决定了赋值表达式的值。例如:a=3+2表达式中有“+”和“=”两个运算符,因为“+”的优先级高于“=”,所以先完成加法,再将5赋值给a。又如:a=(b=5)/(c=2)表达式中有()、=、/运算符,其中“()”优先级最高,先算(b=5),再算(c=2),然后进行除法

45、运算结果为2,最后把2赋给a。运算完后,b的值为5,c的值为2,a的值为2,赋值表达式的值为2。再如:(x=4*5)=8+9先执行括号内的表达式,将20赋给x,然后计算表达式8+9,值为17,然后,17赋给x。最后整个表达式的结果为17。注意:赋值表达式在运算符左侧时必须加括号。2022-8-876程序设计技术基础-C语言4.赋值过程中的类型转换 如果赋值运算符两侧的类型一致,则直接进行赋值。如果赋值运算符两侧的类型不一致,在赋值时系统将自动进行类型转换,即把赋值运算符右边的类型换成左边的类型。转换规则如下:(1)实型与整型转换 将实型数据(包括单双精度)赋给整型变量时,舍弃其小数部分,然后赋

46、给整型变量这里要注意变量的类型(short、int、long)以及相应的数值范围,避免赋值后数据溢出。2022-8-877程序设计技术基础-C语言 例如:float f=65539.45;short i;i=f;执行i=f后,i舍弃小数部分,由于65539超出了short类型的取值范围-3276832767,会出现溢出问题。将整型数据赋给实型变量(包括单双精度)时,数值不变,补足有效位,然后以浮点数形式存储到变量中2022-8-8782022-8-879#includeint main()int m;float x;m=4.53;x=15;printf(m=%d x=%fn,m,x);retu

47、rn 0;【例2-12】实型与整型数据的类型转换程序运行结果为:程序运行结果为:m=4 x=15.000000程序设计技术基础-C语言(2)单、双精度实型转换 将一个double型数据赋给float型变量时,取其前面的67位有效数字,截断时进行四舍五入操作,然后存储到float类型变量中。但要注意数值范围,可能出现溢出错误。例如:float f;double d=123.456789e100;/*指数为100,超过了float数据的最大范围*/f=d;/*f无法容纳如此大的数据,会出现溢出*/将一个float型数据赋给double型变量时,数值不变,有效位数扩展到1516位,在内存中用8个字节

48、存储。2022-8-880程序设计技术基础-C语言(3)字符型与整型(short、int、long)整型数据赋给char型变量时,只保留其最低8位,高位部分舍弃。2022-8-8812022-8-882#includeint main()short i=345;char c;c=i;printf(c=%dn,c);return 0;【例2-13】将整型数据赋给字符型变量程序运行结果为:程序运行结果为:c=89程序设计技术基础-C语言将字符型数据赋给整型变量时,由于字符数据只占1个字节,而整型变量占2个或4个字节。所以,将字符数据(8位)放到整型变量的低8位中。如果字符数据的最高位为0,则整型变

49、量的高位全部补0。如果最高位为1,则整型变量的高位全部补1。这样可以保证数值不会发生变化。如果用的是unsigned char型变量或数据来赋值的话,则一律将整型变量的高位补0。2022-8-8832022-8-884#includeint main()short i;char c=A;i=c;printf(i=%d,c=%dn,i,c);return 0;【例2-14】将字符型数据赋给整型变量A的的ASCII码是十进制数码是十进制数65,二进制,二进制形式形式1000001,最高位置,最高位置0程序运行结果为:程序运行结果为:i=65,c=65C=25程序设计技术基础-C语言(4)整型与整型

50、(short、int、long)和“字符型与整型”相似,当赋值号两边的长度(字节数)不同时,则有“长(字节数多的数据类型)到短(字节数少的数据类型),要截断,舍弃高位部分;短到长,不变样,再用0或1补充高位”。2022-8-8852022-8-886#includeint main()short i=-234;int m;m=i;printf(m=%d,i=%dn,m,i);return 0;【例2-15】整型之间的类型转换2字节字节short短整型数据赋给短整型数据赋给4字节字节int型变量时,符号位填充到高位字节型变量时,符号位填充到高位字节程序运行结果为:程序运行结果为:m=-234,i

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(C语言程序设计-第2章-数据描述及数据运算.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|