《二章数据类型运算符及表达式ppt课件》由会员分享,可在线阅读,更多相关《二章数据类型运算符及表达式ppt课件(64页珍藏版)》请在金锄头文库上搜索。
1、第二章第二章 数据类型、运算符及表达式数据类型、运算符及表达式主要内容:主要内容:c言言语的三种根本数据的三种根本数据类型型算算术运算符以及运算符以及赋值运算符运算符重点、重点、难点:掌握每种数据点:掌握每种数据类型的常量如何表示、型的常量如何表示、 变量如何定量如何定义。各种运算符号的运算各种运算符号的运算规那么、不同那么、不同运算符号之运算符号之间的的优先先级和和结合性。合性。例题:输入一个四位的正整数,提取并输出每一位例题:输入一个四位的正整数,提取并输出每一位上的数字。上的数字。例如:输入例如:输入1978,那么输出,那么输出1,9,7,8问题问题3:怎样输入怎样输入数据?数据?问题2
2、:输入的数据怎入的数据怎样存放?存放?问题4:经过什么运算可以什么运算可以将每一位上的将每一位上的数字取出?数字取出?问题问题5:怎:怎样将结果保样将结果保管并输出?管并输出?问题1:输入的是什入的是什么么样的数的数据?据?C言语的数据类型 本章讨论本章讨论本章讨论本章讨论的根本类的根本类的根本类的根本类型数据型数据型数据型数据问题1:输入的是什入的是什么么样的数的数据?据?答:整数。答:整数。C C数数据据类类型型根本类型根本类型构造类型构造类型指针类型指针类型字符类型字符类型charchar枚举类型枚举类型enumenum整型整型浮点型浮点型单精度型单精度型floatfloat双精度型双精
3、度型doubledouble短整型短整型shortshort长整型长整型longlong整型整型intint数组数组构造体构造体structstruct共用体共用体unionunion空类型空类型voidvoid问题2:输入的数据怎入的数据怎样存放?存放?答:暂存于变量中。答:暂存于变量中。2.2 2.2 常量与常量与变变量量一、一、变量量变量:其量:其值可以改可以改动的量。的量。在运用在运用时应为每个每个变量起一个名字量起一个名字变量名量名 可以可以给变量量赋值变量量值留意区分留意区分变量名和量名和变量量值的不同的不同:变量名:量名:实践上是一个符号地址,在践上是一个符号地址,在编译时,系,
4、系统根据根据变量的量的类型分配相型分配相应的内存的内存单元。元。变量量值:内存存:内存存储单元中存放的数据。元中存放的数据。2000H2019H2019H2019H2019Hint x;系系统给x分配了分配了4个字个字节的空的空间x=3;30000001100000000假假设在程序中需求用到在程序中需求用到3这个数据个数据了,那么我了,那么我们可以直接用可以直接用x这个个变量称号来代表量称号来代表获得它。例如:得它。例如:x*6运用运用变量量值:实践上就是根据践上就是根据变量名所量名所标识的地址找到相的地址找到相应的内存的内存单元,从中取出数据。元,从中取出数据。变量名变量名变量值变量值00
5、00000000000000标识符:用来符:用来标识变量名、符号常量名、量名、符号常量名、函数名、数函数名、数组名、文件名等的有效字符序名、文件名等的有效字符序列。列。C中中对对用用户户自定自定义标识义标识符的符的规规定:定:只能由字母、数字、下划只能由字母、数字、下划线组线组成;成;例如:例如:max min x_1 _a1 第一个字符必需第一个字符必需为为字母或者下划字母或者下划线线;不能和系不能和系统统的关的关键键字重名。字重名。在在C言语中,标识符有言语中,标识符有3种:种: 、 和和 。 关关键字字系系统预定定义的的标识符符用用户标识符符练习:判:判别以下以下标识符的正符的正误:st
6、u1 a.1 a_2 _xy x?y 1ab int xxxx注:注:1见名知名知义2 先定先定义义,后运用;,后运用;题解:解:#include “stdio.hvoid main()问题2:输入的数据怎入的数据怎样存放?存放?答:暂存于变量中。答:暂存于变量中。整型变量如整型变量如何阐明?何阐明?答:答:int 变量称号表变量称号表例如:例如:int a,b;int x,thun,hun,ten,id;分析:程序中用到几个变量?分析:程序中用到几个变量?问题问题3:怎样输入怎样输入数据?数据?答:答:scanf函数函数格式:格式:scanf(格式控制,地址列表格式控制,地址列表)注:注:1
7、、功能:从、功能:从规范范输入入设备上上读入不同入不同类型的多个数型的多个数据,并将它据,并将它们按照指定格式按照指定格式进展展转换后,存后,存储于地址于地址列表列表对应的的变量中。量中。由由%和格式字符组成。和格式字符组成。整型变量的格式字符:整型变量的格式字符:d由假设干个变量地址组由假设干个变量地址组成。成。&变量名变量名题解:#include “stdio.hvoid main()int x,thun,hun,ten,id;scanf( , );输入整型输入整型数据存放数据存放在变量在变量x中中“ %d&x%d&x%d&x问题4:经过什么运什么运算可以将每一位上算可以将每一位上的数字取
8、出?的数字取出?答:算术运算答:算术运算四、四、 算术运算符和算术表达式算术运算符和算术表达式1. 1. 根本的算根本的算术术运算符运算符+(+(加加) -() -(减减) *() *(乘乘) /() /(除除) ) %(%(模,或求余,模,或求余,% %两两侧侧均均应为应为整型数据整型数据) )。2.算算术术表达式:用算表达式:用算术术运算符将运算运算符将运算对对象象衔衔接起来的式子。接起来的式子。例如:表达式表达式表达式的表达式的值2+3*2.59.55/22-5/2-2两个整数相除两个整数相除结果依然果依然为整数,整数,而且向零取整。而且向零取整。5%3 2(-5)%3 -2n n3.
9、3. 优优先先级级* / % * / % 高于高于 + - + -4. 4. 结结合性:左合性:左结结合性合性将以下算术式子用将以下算术式子用c言语的方式表达出来:言语的方式表达出来:1、3+2xy3+2*x/y2、x+5y(8-z)2X+5*y/ (8-2)*(8-2)( )题解:#include “stdio.hvoid main()int x,thun,hun,ten,id; scanf(“%d,&x); thun= hun= ten= id=x/1000;x%1000/100;x%100/10;x%10;经过运算分运算分别求得个、十、求得个、十、百、千位上的百、千位上的数字数字问题问题
10、5:怎样将:怎样将结果输出?结果输出?答:答:printf函数函数格式:格式:printf(格式控制,格式控制,输出出项表表)注:注:1、功能:向、功能:向终端端输出假出假设干恣意干恣意类型的数据型的数据由由%和格式字符组成。和格式字符组成。整型变量的格式字符:整型变量的格式字符:d由假设干个变量名或由假设干个变量名或者表达式组成。者表达式组成。题解:#include “stdio.hvoid main()int x,thun,hun,ten,id; scanf(“%d,&x); thun=x/1000; hun= x%1000/100; ten= x%100/10; id= x%10;分分别
11、输出个、出个、十、百、千位十、百、千位上的数字上的数字printf(“%d,%d,%d,%dn,thun,hun,ten,id);1格式控制:双引号括起来的字符串。格式控制:双引号括起来的字符串。例如:例如:printf(“x=%d,y=%dn,x,y);格式控制格式控制输出列表出列表普通包括两种信息:普通包括两种信息:格式格式阐明:由明:由%和格式字符和格式字符组成。例如:成。例如:%c %d %f 等等等等普通字符:照原普通字符:照原样输出出格式阐明格式阐明普通字符普通字符printf函数的进一步阐明:函数的进一步阐明:假假设x、y的的值分分别为3、5那么那么输出:出:x=3,y=5题解:
12、#include “stdio.hvoid main()int x,thun,hun,ten,id; scanf(“%d,&x); thun=x/1000; hun= x%1000/100; ten= x%100/10; id= x%10;假假设输入的数据入的数据为1978,那么,那么输出出1978:1,9,7,8printf格式格式应怎怎样规定定?printf(“ “ , );x,thun,hun,ten,id%d:%d,%d,%d,%dn2.32.3整型数据整型数据一、整型常量一、整型常量十十进制:由正制:由正负号以及号以及0到到9的数字的数字组成,成, 不能包含小数点。不能包含小数点。
13、例如:例如:12 -36 等等等等八八进制:以制:以0开开头,由,由0到到7的数字的数字组成,成, 例如:例如:014 -042 等等等等十六十六进制:以制:以0x或者或者0X开开头, 由由0到到9及及a到到f或者或者A到到F的数的数字字组成,成, 例如:例如:0xb -0x22 等等等等二、整型二、整型变量量1、整型、整型变变量的存放方式量的存放方式整型数据在内存中以二整型数据在内存中以二进制的制的补码方式存放。方式存放。整型整型变量量根本整型根本整型(4B)短整型短整型(2B)长整型整型(4B)有符号有符号 int无符号无符号 unsigned int 有符号有符号 short (int)
14、 无符号无符号 unsigned short (int) 有符号有符号 long (int) 无符号无符号 unsigned long (int) 2 2、整型变量的分类、整型变量的分类练习:1、输入一个分入一个分钟数,数,转换成小成小时和分和分钟输出。出。例如例如输入入200,那么,那么输出出 200 minutes=3 hours and 20 minutes2、输入两个整数,分别存放于两个变量中,然后将、输入两个整数,分别存放于两个变量中,然后将两个变量的值交换并输出。两个变量的值交换并输出。课程回想课程回想1、定、定义义一个整型的一个整型的变变量量x,应应运用的运用的语语句句为为: 。
15、int x;2、C言言语语本身不提供本身不提供输输入入输输出出语语句,句,输输入和入和输输出操出操作是由作是由C函数函数库库中的函数来中的函数来实现实现的。最根本的的。最根本的输输出函出函数是数是 ,最根本的,最根本的输输入函数是入函数是 。假假设已有定已有定义:int x; 那么那么printf();scanf();从从键盘输入数据入数据给x应运用的运用的语句句为: 。scanf(%d,&x);假假设x的的值为100,要求,要求输出出x=100的的语句句为: 。printf(x=%d, x);例题例题sy4.c:输入一个小数,将其保管小数位:输入一个小数,将其保管小数位数后两位进展四舍五入,
16、并输出结果。数后两位进展四舍五入,并输出结果。例如:输入例如:输入123.674,那么输出,那么输出123.67 输入输入123.678,那么输出,那么输出123.68问题问题3:怎样输入怎样输入数据?数据?问题2:输入的数据怎入的数据怎样存放?存放?问题4:经过什什么运算可以将么运算可以将数据保管至小数据保管至小数位后两位并数位后两位并进展四舍五入展四舍五入?问题问题5:怎:怎样将结果保样将结果保管并输出?管并输出?问题1:输入的是什入的是什么么样的数的数据?据?整型整型整型整型 实实型型型型( ( ( (浮浮浮浮点点点点型型型型) ) ) )字字字字符型符型符型符型 空空空空类类型型型型枚
17、枚枚枚举举型型型型根本根本根本根本类类型型型型本章讨论的根本章讨论的根本章讨论的根本章讨论的根本类型数据本类型数据本类型数据本类型数据问题1:输入的是什入的是什么么样的数的数据?据?答:小数,答:小数,实型数据。实型数据。2.3.2实实型数据型数据实型数据也叫浮点数型数据也叫浮点数floatingpoint number一、一、实型常量型常量表示方式有两种:表示方式有两种:1 十十进进制小数方式:由数字和小数点制小数方式:由数字和小数点组组成。而成。而且必需有小数点。且必需有小数点。例如:例如:1.2 3.45 .67 100. 等等等等2 指数方式:指数方式:例如数据例如数据 1234.5
18、可以表示成:可以表示成:123.45 x 101123.45e+112.345e+212.345 x 1021.2345e+31.2345 x 10312345e-112345 x 10-1规范化的指数方式:小数点前规范化的指数方式:小数点前有而且只需一位非零的数字有而且只需一位非零的数字题解:解:#include “stdio.hvoid main()问题2:输入的数据怎入的数据怎样存放?存放?答:暂存于变量中。答:暂存于变量中。实型变量如实型变量如何阐明?何阐明?答:答:float 变量称号表变量称号表例如:例如:float a,b;float x, y;分析:程序中用到几个变量?分析:程
19、序中用到几个变量?二、二、实型型变量量1、存放方式:、存放方式:按指数方式存放。按指数方式存放。普通的普通的实型数据占用型数据占用4个字个字节。即。即32位。位。2 2、实实型型变变量的分量的分类类单精度精度 float 4B 有效位有效位7位位双精度双精度 double 8B 有效位有效位16位位3、输输入、入、输输出格式符出格式符单精度精度 %f长双精度双精度 long double问题问题3:怎样输入怎样输入数据?数据?答:答:scanf函数函数格式:格式:scanf(格式控制,地址列表格式控制,地址列表)由由%和格式字符组成。和格式字符组成。实型数据的格式字符:实型数据的格式字符:f由
20、假设干个变量地址由假设干个变量地址组成。组成。&变量名变量名题解:解:#include “stdio.hvoid main()float x,y;scanf( , );输入实型输入实型数据存放数据存放在变量在变量x中中“ %f&x问题4:经过什么运什么运算可以将小数四舍算可以将小数四舍五入保管到小数位五入保管到小数位后两位?后两位?答:算术运算答:算术运算 100123.68123.6712367.812367.4123.678123.6741236812367+0.512368.312367.9?(int) 100y=(int)(x*100+0.5)y=(int)(x*100+0.5)/10
21、0xy=x*100y=x*100+0.5?.?题解:解:#include “stdio.hvoid main()float x,y; scanf(“%f,&x);问题4:经过运运算以将小数四舍算以将小数四舍五入保管到小数五入保管到小数位后两位?位后两位?y=(int)(x*100+0.5)/100.2.4.22.4.2强迫类型转换运算符强迫类型转换运算符可以利用强迫类型转换运算符将一个表达式可以利用强迫类型转换运算符将一个表达式转换成所需类型。例如:转换成所需类型。例如:(double)a (double)a (将将a a转换成转换成doubledouble类型类型) )(int)(x+y)
22、(int)(x+y) (将将x+yx+y的值转换成整型的值转换成整型) )(float)(5%3) (float)(5%3) (将将5%35%3的值转换成的值转换成floatfloat型型) )普通方式为普通方式为( (类型名类型名)()(表达式表达式) )(int)x+y(int)x+y那么只将那么只将x x转换成整型,然后与转换成整型,然后与y y相加。相加。留意:留意:强迫类型转换时,原变量类型未变化。强迫类型转换时,原变量类型未变化。书写格式书写格式 (int) x (int) x不要写成不要写成int( x )int( x )float a=5.1,cfloat a=5.1,c;in
23、t bint b;b=a%3b=a%3;c=a*b;c=a*b;float a=5.1,cfloat a=5.1,c;int bint b;b=(int)a%3b=(int)a%3;c=a*bc=a*b留意:留意:强迫迫类型型转换运算符运算符优先先级高于算高于算术运算符运算符优先先级C的值是:的值是:1010.2练习:设 x=2.5, a=7,y=4.7 计算以下表达式的算以下表达式的值x+a%3*(x+y)%x/4(int)(x+y)%(int)x/4 错误的表达式的表达式正确的表达式正确的表达式=2.5+7%3*(int)(2.5+4.7)%(int)2.5/4=2.5+1*(int)(7
24、.2)%2/4=2.5+1*7%2/4=2.5+1/4=2.5+0.25=2.7502.5问题问题5:怎样将:怎样将结果输出?结果输出?答:答:printf函数函数格式:格式:printf(格式控制,格式控制,输出出项表表)由由%和格式字符组成。和格式字符组成。实型变量的格式字符:实型变量的格式字符:f由假设干个变量名或由假设干个变量名或者表达式组成。者表达式组成。题解:解:#include “stdio.hvoid main()float x,y; scanf(“%f,&x);y=(int)(x*100+0.5)/100.;printf(“%f,y);例如:例如:输入一个球的半径整数,分入一
25、个球的半径整数,分别计算球算球的周的周长、截面、截面积和体和体积,并,并输出。出。main()float l, s, v; /*对变量的声明*/scanf(“%d,&r); /*输入球的半径*/ l= /*圆的周长*/s= /*圆的截面积*/2*3.1416*r; 3.1416*r *r; v= /*球的体积*/4*3.1416*r *r*r/3; #define PI 3.1416PIPIPI3.14符号常量符号常量printf“circumference :%f,area:%f,volum:%fn,l,s,v);int r;2.3.3 2.3.3 字符型数据字符型数据一、一、 字符常量字符
26、常量C C的字符常量是用的字符常量是用单引号括起来的一个字符。引号括起来的一个字符。如如aa,xx,dd,?, 等都是字符常量。等都是字符常量。C C还允允许用一种特殊方式的字符常量,就是以用一种特殊方式的字符常量,就是以一个一个“开开头的字符序列的字符序列, ,称称为本本义字符。字符。例如,例如, n n,它代表一个,它代表一个“换行符。行符。这是一是一种种“控制字符,在屏幕上是不能控制字符,在屏幕上是不能显示的。示的。本本义字符字符n n 回回车换行行 t t 跳至下一个制表位跳至下一个制表位b b 退格退格 r r 回回车不不换行行f f 换页显示示 显示示 显示示 显示示ddd 1-3
27、ddd 1-3位位8 8进制数制数 xhh 1-2 xhh 1-2位位1616进制数制数二、二、 字符变量字符变量字符变量的定义方式如下:字符变量的定义方式如下:charchar变量名表变量名表例如:例如:char c1,c2;char c1,c2;留意只能放一个字符。占用留意只能放一个字符。占用1 1个字节个字节用下面语句可以对用下面语句可以对c1c1、c2c2赋值:赋值:c1=ac1=a;c2=bc2=b;三、三、 字符串常量字符串常量a a 是什么是什么类类型数据?型数据?“a“a是什么是什么类类型数据?型数据?留意区分!留意区分!字符串常量:以双引号括起来的字符序列字符串常量:以双引号
28、括起来的字符序列字符串常量:以双引号括起来的字符序列字符串常量:以双引号括起来的字符序列例如:例如:例如:例如: “CHINA “CHINA “CHINA “CHINA,“a“a“a“a, “ 123.45 “ 123.45 “ 123.45 “ 123.45 c c c c规规规规定:在每一个字符串的定:在每一个字符串的定:在每一个字符串的定:在每一个字符串的结结结结尾加一个尾加一个尾加一个尾加一个“字符串字符串字符串字符串终终终终了了了了标标标标志,以便系志,以便系志,以便系志,以便系统统统统据此判据此判据此判据此判别别别别字符串能否字符串能否字符串能否字符串能否终终终终了。了。了。了。C
29、 C C C规规规规定定定定以字符以字符以字符以字符0000作作作作为为为为字符串字符串字符串字符串终终终终了了了了标标标标志。志。志。志。0000是一个是一个是一个是一个ASCIIASCIIASCIIASCII码值为码值为码值为码值为0 0 0 0的字符,代表一个空操作。的字符,代表一个空操作。的字符,代表一个空操作。的字符,代表一个空操作。c=a;c=a;定定义字符数据:字符数据:char c;char c;c=ac=a;c=“CHINAc=“CHINA c=CHINAc=CHINA对错错错aa和和“a“a的区的区别:aa是字符数据,是字符数据,“a“a是字符串数据是字符串数据C H I
30、N A 0C H I N A 0一个字符串一个字符串“CHINA“CHINA,实践上在内存中所占践上在内存中所占的空的空间不是不是5 5个字个字节,而是,而是6 6个字个字节。最后一。最后一个字符个字符为00。但在。但在对字符串字符串进展展处置和操作置和操作时,终了了标志志00不参与操作。不参与操作。00字符是系字符是系统自自动加上的,表示字符串加上的,表示字符串终了了标志志四、对字符数据的输入输出格式符为:四、对字符数据的输入输出格式符为:%c五、五、 内存中的存储方式及其运用方法内存中的存储方式及其运用方法例如:字符例如:字符a a 、bb的内存方式的内存方式为:以以该字符字符ASCIIA
31、SCII码的二的二进制方式放到存制方式放到存储单元中。元中。字符字符aaASCIIASCII码码:内存方式:内存方式:97970110000101100001ASCIIASCII码码:内存方式:内存方式:98980110001001100010字符字符bb字符字符AA内存方式:内存方式:0100000101000001内存方式:内存方式: 0100001001000010字符字符BBASCIIASCII码码:6565ASCIIASCII码码:6666例例2.62.6向字符变量赋以整数。向字符变量赋以整数。 main()main() char c1 char c1,c2;c2; c1=97;c2
32、=98; c1=97;c2=98; printf(%c %cn printf(%c %cn,c1c1,c2);c2); printf(%d %dn printf(%d %dn,c1c1,c2);c2); c1=ac1=a;c2=bc2=b;输出字符出字符输出整数出整数定定义字符字符变量量留意:留意:%c%c表示什么含表示什么含义 %d %d表示什么含表示什么含义“%c“%c是是输出字符出字符时必需运用的格式符。必需运用的格式符。总结:字符:字符变量可用整型数据量可用整型数据赋值 字符数据可字符数据可输出字符,亦可出字符,亦可输出整数出整数例例2.72.7大小写字母的大小写字母的转换转换。 字符
33、数据运算字符数据运算 main()main() char c1 char c1,c2c2; c1=a; c2=b; c1=a; c2=b; c1=c1-32; c1=c1-32; c2=c2-32; c2=c2-32; printf(“%c printf(“%c,%c%c,c1c1,c2)c2); 总结:字符数据可以:字符数据可以进展算展算术运算,且以字符的运算,且以字符的ASCII码参与运算。参与运算。程序程序结果:果:A,B例题:输入一个小写字母,转换成其对应的大写字母例题:输入一个小写字母,转换成其对应的大写字母输出。输出。题解:解:#inlcude “stdio.hvoid main(
34、) /*定定义变量量*/ /*输入字母入字母*/ /*字母字母转换*/ /*输出出*/char c1,c2;scanf(“%c,&c1);c2= c1-32;printf(“%c,c2);c1=getchar();putchar(c2);练习作作业:1、字母、字母译码:输入一个小写字母,入一个小写字母,输出其后的出其后的第四个字符。第四个字符。(zuoye1.c) 例如:例如:输入入a ,输出出d; 输入入v,输出出z; 输入入y,输出出c; 2、数字字符与数字之、数字字符与数字之间的的转换:输入一个数字入一个数字字符,字符,输出出对应的数的数值。(zuoye2.c)例如:例如:输入字符入字符
35、9,输出数出数值9字符数据与整型数据的关系字符数据与整型数据的关系1 1、字符变量可以整型数据赋值、字符变量可以整型数据赋值2 2、字符数据可输出字符,亦可输出整数、字符数据可输出字符,亦可输出整数3 3、字符数据可以进展算术运算,且以字符的、字符数据可以进展算术运算,且以字符的ASCIIASCII码参与运算。码参与运算。下一页下一页一、一、getchar()作用:从作用:从终端接端接纳一个字符,只能接受一个字符,一个字符,只能接受一个字符,以回以回车键终了了输入。入。注:注:该函数函数为空参,但括号不可以省略。函数的空参,但括号不可以省略。函数的前往前往值即即为从从键盘接接纳的字符。的字符。
36、常用格式:用常用格式:用赋值运算符将运算符将该函数的前往函数的前往值赋值给字符型字符型变量。量。例如:例如:char c; c=getchar();注:注:getchar(c);错误的函数运用的函数运用补充:字符数据的输入和输出补充:字符数据的输入和输出前往前往补充:字符数据的输入和输出补充:字符数据的输入和输出二、二、putchar()作用:向作用:向终端端输出一个字符。出一个字符。参数可以参数可以为常量、常量、变量、表达式或者函数。量、表达式或者函数。例如例如 main() char c1=a; putchar(c1); putchar(b); putchar(c1-32; #includ
37、e “stdio.h前往前往2.4.32.4.3赋值运算符和赋值表达式赋值运算符和赋值表达式一、一、赋值运算符运算符 “=作用:将运算符右作用:将运算符右边的表达式的的表达式的值赋值给左左边的的变量。量。注:运算符左注:运算符左边只能只能为变量,不能量,不能为常量或者表达式。常量或者表达式。例如:例如:x=5 常量常量5赋给变量量x y=3*9+6 把表达式的把表达式的值33 赋给变量量y 以上都是正确的以上都是正确的 5=x x+y=3 都是都是错误的的二二. . 复合的赋值运算符复合的赋值运算符赋值运算符与双目运算符运算符与双目运算符衔接接组成复合成复合赋值运算符。运算符。= = 与与 +
38、 - * / % + - * / % 衔衔接构成:接构成:+= -= *= /= %= += -= *= /= %= 复合复合赋值赋值运算符运算符例如:例如:a+=5a+=51 1、其作用相当于、其作用相当于变变量与运算符右量与运算符右边边的表达式的表达式进进展相展相应应的运算后,再将的运算后,再将结结果果赋值给变赋值给变量本身。量本身。1 1、其作用相当于、其作用相当于变变量与运算符右量与运算符右边边的表达式的表达式进进展相展相应应的运算后,再将的运算后,再将结结果果赋值给变赋值给变量本身。量本身。上例中:上例中:a+=5 a+=5 就相当于就相当于 a=a+5 a=a+51 1、其作用相当
39、于、其作用相当于变变量与运算符右量与运算符右边边的表达式的表达式进进展相展相应应的运算后,再将的运算后,再将结结果果赋值给变赋值给变量本身。量本身。上例中:上例中:a+=5 a+=5 就相当于就相当于 a=a+5 a=a+5再如:再如: x*=y+8 x*=y+8 相当于相当于 x=x*(y+5) x=x*(y+5)2 2、结结合性:右合性:右结结合合3 3、赋值赋值表达式的表达式的值值:被:被赋值赋值的的变变量的量的值值。n n练习练习:假:假:假:假设设有有有有 int a=3; int a=3; int a=3; int a=3;那么以下表达式的那么以下表达式的那么以下表达式的那么以下表
40、达式的值为值为:n n1 1 1 1、a*=5+3a*=5+3a*=5+3a*=5+3n n等价于:等价于:等价于:等价于:a=a*(5+3) a=a*(5+3) a=a*(5+3) a=a*(5+3) 所以所以所以所以a a a a的的的的值为值为24 24 24 24 表达式的表达式的表达式的表达式的值为值为24242424n n2 2 2 2、a*=a+=5/3a*=a+=5/3a*=a+=5/3a*=a+=5/3n n(1)a+=5/3 (1)a+=5/3 (1)a+=5/3 (1)a+=5/3 相当于相当于相当于相当于 a=a+5/3 a=a+5/3 a=a+5/3 a=a+5/3
41、所以所以所以所以a a a a的的的的值为值为值为值为 4n n(2)a*=4 (2)a*=4 (2)a*=4 (2)a*=4 相当于相当于相当于相当于 a=a*4 a=a*4 a=a*4 a=a*4 所以所以所以所以a a a a的的的的值为值为值为值为162.4.52.4.5逗号运算符与表达式逗号运算符与表达式1、逗号运算符:、逗号运算符: ,2、逗号表达式:由逗号、逗号表达式:由逗号衔衔接起来的多个式子接起来的多个式子方式:表达式,表达式,表达式方式:表达式,表达式,表达式注:自左至右依次求取每个表达式的注:自左至右依次求取每个表达式的值,最右,最右边表达表达式的式的值即即为整个逗号表达式的整个逗号表达式的值。例如:例如:3+5,4*6,5/3,9%6整个表达式的整个表达式的值为32在一切的运算符中级别最低。小结:以上三种运算符的优先级为:小结:以上三种运算符的优先级为:算算术运算符运算符 * / % + -赋值运算符运算符 = += -= *= /= %= 逗号运算符逗号运算符 ,低低高高练习:int a=0,b=0,c=0; c=(a-=a-5),(a=b,a+3 printf(“%d,%d,%dn,a,b,c);结果果为:0,0,5