第三章 运算符与表达式_第1页
第三章 运算符与表达式_第2页
第三章 运算符与表达式_第3页
第三章 运算符与表达式_第4页
第三章 运算符与表达式_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

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

文档简介

第三章运算符与表达式1第一节算术运算符和算术表达式第二节赋值运算符和赋值表达式第三节关系运算符和关系表达式第四节逻辑运算符和逻辑表达式第五节条件运算符和条件表达式第六节逗号运算符和逗号表达式第七节不同类型数据的混合运算2第一节算术运算符和算术表达式基本的算术运算符自增和自减运算符3C语言提供了算术运算符

+(加法运算或正号运算符)-(减法运算或负号运算符)*(乘法运算符)/(除法运算符)%(求余运算符,或称模运算符)基本的算术运算符算术运算符和算术表达式4说明:两个整数相除结果为整数,如8/5的结果为1,舍去小数部分。如果参加运算的两个数中有一个数为实数,则结果是double型。求余运算要求%两侧都是整型数据。算术运算符和算术表达式基本的算术运算符5算术表达式用算术运算符和括号将运算量连接起来的式子称为算术表达式。运算符有优先级和结合性,在求表达式的值时,要按照优先级的高低依次计算,如果运算符两侧优先级相同,则按规定的结合方向进行。结合性算术运算符和算术表达式6算术运算符和算术表达式优先级-(负号运算符)*/%+-(加减运算符)

我最高!

我最低!7++运算符的作用是使变量的值增1。--运算符的作用是使变量的值减1。常见的用法有:++i,--i在使用i前,先使i的值加(减)1i++,i--在使用i后,先使i的值加(减)1自增和自减运算符自增和自减运算符8例题已知

i=5(1)j=i++;j=?i=?(2)j=++i;j=?i=?56669自增和自减运算符注意:

1、自增和自减运算符只能用于变量,表达式(x+y)++是不合法的。2、自增和自减运算符的结合方向是“自右向左”。

如表达式-i++等价于-(i++)。3、(i++)+(i++)+(i++)结果?4、(++i)+(++i)+(++i)结果?5、printf(“%d,%d”,i,i++)10第二节赋值运算符和赋值表达式赋值运算符赋值表达式赋值运算符的结合性11简单的赋值运算符复合的赋值运算符=+=-=*=%=/=12赋值运算符简单的赋值就是把一个表达式的值赋给一个变量。例如:

i=5;i=j+1;简单的赋值运算符13

i+=2等价于i=i+2a*=b+5等价于a=a*(b+5)x%=3等价于x=x%3赋值运算符在赋值符“=”之前加上其它运算符,可以构成复合的运算符。例如:

C语言采用这种复合运算符,一是为了简化程序,使程序精炼;二是为了提高编译效率。14赋值表达式由赋值运算符将一个变量和一个表达式连接起来的式子称为赋值表达式。形式:

〈变量〉〈赋值运算符〉〈表达式〉例如:x=3y=x+3对赋值表达式求解的过程是:将赋值运算符右侧的表达式的值赋给左侧的变量。赋值表达式的值就是被赋值的变量的值。结合性15注意:一般形式的赋值表达式中的“表达式”又可以是一个赋值表达式。如:

a=b=8按照从右到左的结合性等价于

a=(b=8)赋值表达式也可以包含复合的赋值运算符。设a的值为6,计算a+=a-=a*a

先进行a*a的计算,结果为36再进行a-=36的计算,相当于a=a-36=-30

最后进行a+=-30的计算,相当于a=a-30=-6016第三节关系运算符和关系表达式关系运算符

优先级<<=>>===!=高低17关系表达式概念用关系运算符将两个表达式(可以是算术表达式、关系表达式、赋值表达式或逻辑表达式)连接起来的式子,称为关系表达式。关系表达式的值为逻辑值“真”或“假”,以1代表“真”,以0代表“假”。结合性:左结合性18例如:关系表达式“8==4”的值为“假”,表达式的值为0。关系表达式“5>0”的值为“真”,表达式的值为1。若a=5,b=3,c=1,则a>b>c的计算过程是:

先计算a>b,结果为真,值为1再计算1>c,结果为假,值为0

f=b>c!=a的计算过程是:先计算b>c,结果为1再计算1!=c,结果为0最后将0赋值给f19第四节逻辑运算符和逻辑表达式逻辑运算符!(逻辑非)&&(逻辑与)||(逻辑或)a b !a !b a&&ba||b真 真 假 假 真真真 假 假 真 假真假 真 真 假 假真

假 假 真 真 假假20赋值运算符||&&运算符的优先级关系运算符算术运算符高低!(非)21逻辑表达式逻辑表达式的值是一个逻辑量“真”或“假”。C语言编译系统在给出逻辑结果时,以数值1代表“真”,以0代表“假”;但是在判断一个量是否为“真”时,以非0代表“真”,以0代表“假”。例如:

若x=10,则!x的值为0。

若a=3,b=2,则a&&b的值为1。

5&&0||8的值为1。结合性:左结合性。22逻辑运算符的特点特点在逻辑表达式的求解中并不是所有的运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行下一个运算符。例如:1、a&&b&&c2、a||b||c当a=5,b=3,c=2,d=1,x=1,y=1则表达式(x=a<b)&&(y=c<d)首先计算“a<b”,结果为0,则x=0,因此“y=c<d”不被执行,所以y的值仍为1而不是0。23第五节条件运算符和条件表达式条件运算符

?:条件表达式的形式为:

表达式1?表达式2:表达式3这就是条件表达式,先计算表达式1,若其值为非零,则结果为表达式2的值,否则就是表达式3的值。结合性:从右到左24例如:设a=2,b=3,c=4,则(1)m=a>b?a:b的值为3(2)m=a>b?a:b>c?b:c

先计算b>c?b:c,结果为4再计算m=a>b?a:4,结果为4则m的值为4,整个表达式的值也为4。

25第六节

逗号运算符和逗号表达式在逗号表达式中,逗号是一种运算符。形式如下

表达式1,表达式2由逗号隔开的一对表达式从左向右进行计算,其求解过程为:先求解表达式1,再求表达式2,整个逗号表达式的值是表达式2的值。逗号运算符是所有运算符中级别最低的。26例如

a=4*6,a+5

整个逗号表达式的值为29。注意一个逗号表达式又可以与另一个表达式组成一个新的逗号表达式,例如:

(a=4*6,a+5),a+6

整个表达式的值为30。27第七节

不同类型数据的混合运算C语言允许数据值从一种类型转换成另一种类型。在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。转换的规则按图所示。高

doublefloatlongunsigned低int

char,short28说明横向向左的箭头表示当运算对象为不同类横向向左的箭头表示必定的转换,如字符型(char)数据和短整型(short)数据必定先转换成整型(int),以提高运算精度。纵向的箭头表示当运算对象为不同类型时转换的方向型时转换的方向。数据总是由低级别向高级别转换。29C语言提供一种“强制类型转换”运算符,将一个类型的变量强制转换为另一种类型。一般形式为:

(类型标识符)表达式例如:

k=(int)((int)x+(float)i)/*得到整型数*/(float)(x=85)/*得实型单精度数*/注意对一个变量进行强制转换后,得到一个新的类型的数据,但原来变量的类型不变。30例如若x原为实型变量且值为2.6,在执行

i=(int)x

后得到一个整数2,并把它赋给整型变量i,但x仍为实型,值为2.6。31字符输出函数格式:putchar(c)功能:将c值所对应的字符输出到标准输出设备上(一般为显示器)。c可以是整型或字符型。一次只能输出一个字符,也可以输出控制符,如

putchar('\n')输出一个换行符,即光标移到下一行。函数调用语句:32例:#include"stdio.h"main(){charch1,ch2;ch1=‘A’;ch2=‘B’;putchar(ch1);putchar(ch2);

}运行程序,运行结果为ABputchar()函数也可以输出转义字符,如:putchar(‘\101’)即输出字符‘A’33格式输出函数格式:printf(格式控制,输出表列)功能:printf函数可以将任意类型的多个数据输出到标准输出设备上(一般为显示器)。函数调用语句:34普通字符格式说明转义字符格式控制由双引号括起来的字符串由“%”和格式字符组成,它的作用是将输出的数据按照指定的格式输出。需要原样输出的字符。用于控制输出。35附加格式说明符格式字符

含义

字母l 用于长整型,可加在格式符d,o,x,u之前

m(整数)数据最小宽度

.n(整数)对实数,表示输出n位小数;对字符串,表示截取的字符个数

— 输出的数字或字符在域内向左靠printf格式符格式字符

含义

d 十进制形式输出带符号整数(正数输出不带符号)

o 八进制形式输出无符号整数(不输出前导0)

x 十六进制形式输出无符号整数(不输出前导0x)

u 十进制形式输出无符号整数

c 输出一个字符

s 输出一个字符串

f 小数形式输出单、双精度实数(隐含输出6位小数)

e 指数形式输出单、双精度实数(数字部分有6位小数)

g 当指数小于-4或大于给定的精度时用%e格式,否则用%f格式。36main(){inta,b;floatx;charc;a=123;b=-1;x=3.14;c='A';

printf("%d,%4d\n",a,a);printf("%d,%x,%o,%u\n",b,b,b,b);printf("%c,%d\n",c,c);printf("%f,%6.1f\n",x,x);}写出程序运行结果371111111111111111-1在内存中的存放(补码形式)123,123-1,ffff,177777,65535A,653.140000,3.1运行结果38字符输入函数格式:getchar()、getch()或getche()功能:从标准设备(一般是键盘)输入一个字符。字符输入函数没有参数,函数值就是从设备输入的字符。函数调用语句:39三个函数有一些差别:getchar()函数在由键盘键入一个字符后,必须按回车键,而getch()和getche()函数不需要。getche()函数和getchar()会显示出所输入的字符,而getch()函数不响应输入的字符。40main(){printf(“Enteracharactertoexit…\n”);getch();}运行结果:Enteracharactertoexit...(注:输入字符’a’不显示)比较getchar()和getch()函数:main(){printf(“Enteracharactertoexit…\n”);getchar();}运行结果:Enteracharactertoexit...(注:输入字符’a’显示)a(回车)41例4.3从键盘输入三个大写字母,将其转换成小写字母输出。#include"stdio.h"main(){charc1,c2,c3;c1=getchar();c2=getchar();c3=getchar();c1=c1+32;c2=c2+32;c3=c3+32;putchar(c1);putchar(c2);putchar(c3);

}运行程序,输入数据CPUCPU运行结果为cpu42#include"stdio.h"main(){intc1,c2;charc;printf("Pleaseenteracharacter:\n");c=getchar();c1=c-1;c2=c+1;

putchar(c1);putchar(c);putchar(c2);}例4.8给出一个大写字母,要求按字母顺序打印出3个字母,指定的字母是三个字母中间的一个字母。输入的字母不能为A或Z。43格式输入函数格式:scanf(格式控制,地址表列)功能:scanf函数可以从标准输入设备输入任意类型的多个数据(一般为显示器)。注意:输入数不能规定精度格式控制与printf函数中的含义相同。函数调用语句:44scanf格式符格式字符

含义

d 用来输入十进制整数

o 用来输入八进制整数

x 用来输入十六进制整数

c 输入一个字符

s 输入一个字符串,以‘\0’为结束标志

f

用来输入实数,可以用小数形式或指数形式

e 与f作用相同(e和f输入时不能规定精度)附加格式说明符格式字符

含义

字母l

用于输入长整型或double型,可加在格式符d,o,x,e,f之前

字母h

用于输入短整型,可加在格式符d,o,x之前

m(整数)指定输入数据所占宽度

* 跳过本项输入,读入后不送给相应变量

45当输入一串数据时,系统如何区分每个数据呢?(1)根据格式字符的含义分隔字符。

sacnf("%d%c%f",&a,&b,&c);若输入数据:120a45.6则a=120,b='a',c=45.6(2)系统按格式串指定的长度截取所需的数据。

scanf("%3d%2d",&a,&b);输入数据12345则a=123,b=4546(3)用隐含的分隔符。在输入数据中用空格或换行符分隔数据。

scanf("%d%d%d",&a,&b,&c);输入数据345或输入34(回车)5(回车)则a=3,b=4,c=5(4)%后的“*”附加说明符,用来表示跳过它相应的数据。

scanf("%d,%*d,%d",&a,&b);如果输入3,4,5则a=3,b=5,第二个数据跳过不赋给任何变量。47(5)使用显示分隔符。在格式说明符中还可以有其它字符,在输入字符时应输入与这些字符相同的字符。

scanf("%d,%d,%d",&a,&b,&c);输入数据3,4,5

scanf(”a=%d,b=%d,c=%d",&a,&b,&c);输入数据

a=3,b=4,c=5(6)用“%c”格式输入字符时,空格字符和转义字符都作为有效字符输入:scanf("%c%c%c",&c1,&c2,&c3);如果输入abc则字符‘a’送给c1,空格送给c2,字符’b’送给c348注意:(1)输入时不能规定精度,如

scanf(“%6.1f”,&a)是

温馨提示

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

评论

0/150

提交评论