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