第2章表达式PPT讲稿.ppt

上传人:石*** 文档编号:43541326 上传时间:2022-09-17 格式:PPT 页数:19 大小:948.50KB
返回 下载 相关 举报
第2章表达式PPT讲稿.ppt_第1页
第1页 / 共19页
第2章表达式PPT讲稿.ppt_第2页
第2页 / 共19页
点击查看更多>>
资源描述

《第2章表达式PPT讲稿.ppt》由会员分享,可在线阅读,更多相关《第2章表达式PPT讲稿.ppt(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第2章表达式第1页,共19页,编辑于2022年,星期一表达式的类型n n 算术表达式算术表达式n n 关系关系关系关系/逻辑表达式逻辑表达式逻辑表达式逻辑表达式n n 赋值表达式赋值表达式赋值表达式赋值表达式n n n n 左值表达式:左值表达式:左值表达式:左值表达式:表达式的结果有明确的内存地址,表达式的结果有明确的内存地址,表达式的结果有明确的内存地址,表达式的结果有明确的内存地址,可以出现在赋值操作符的左边,如一个变量。可以出现在赋值操作符的左边,如一个变量。可以出现在赋值操作符的左边,如一个变量。可以出现在赋值操作符的左边,如一个变量。带副作用的操作符带副作用的操作符带副作用的操作符

2、带副作用的操作符要求操作数必须是左值表达式要求操作数必须是左值表达式要求操作数必须是左值表达式要求操作数必须是左值表达式如如如如 :a+b+=2;/oka+b+=2;/ok 3+(a+b)+3=x;/error 3+(a+b)+3=x;/error包含什么类型的操作符第2页,共19页,编辑于2022年,星期一表达式的值n n每个表达式有一个值每个表达式有一个值n n赋值表达式的值是赋值操作符最左边的操作数的值若若a=b=c=5 a=b=c=5 则a a、b、c和表达式的值都是5 5;n n关系关系/逻辑表达式的计算结果为逻辑值逻辑表达式的计算结果为逻辑值n n表达式的值可以:表达式的值可以:参

3、加运算参加运算 通过赋值运算存储在某个变量中通过赋值运算存储在某个变量中 直接输出直接输出第3页,共19页,编辑于2022年,星期一 操作符与操作数之间可以用空格符分隔,如操作符与操作数之间可以用空格符分隔,如a a+b b 对于连续多个操作符,可以用空格符分隔,如对于连续多个操作符,可以用空格符分隔,如a a-b b也可以在先运算的子表达式上加圆括号,如也可以在先运算的子表达式上加圆括号,如a a-(-(-b b)否则可能会有歧义,如:否则可能会有歧义,如:a-ba-b可以有可以有(a-)-b(a-)-b和和a-(-b)a-(-b)两种解释,两种解释,多数编译系统按多数编译系统按贪婪准则贪婪

4、准则确定操作符的功能,确定操作符的功能,即即a a-b b是是(a a-)-)-b b不是不是a-(-b)a-(-b)注意注意c+c+的表达式与数学表达式的区别的表达式与数学表达式的区别 数学中的数学中的 abc abc 应表示成应表示成 (ab)&(bc)(ab)&(bc)vc vc环境下,过长的表达式可以分行书写,用环境下,过长的表达式可以分行书写,用 连接连接表达式的书写尽可能多地自左而右将若干个字符组成一尽可能多地自左而右将若干个字符组成一个操作符个操作符第4页,共19页,编辑于2022年,星期一表达式的副作用问题表达式的副作用问题当一个表达式中包含带副作用的操作符时,该表达式的结果有

5、时是不确定的。例如:int x=1;(x+1)*(+x)由于C+没有规定操作符+和+谁先计算,因此,不同的编译程序可能会给出不同的实现:先计算+,则结果为:4 先计算+,则结果为:6 因此,应尽量避免把带副作用的操作符用在复杂的表达式中,最好把它们作为单独的操作来用。第5页,共19页,编辑于2022年,星期一表达式的输出表达式的输出C+C+提供了多种把计算结果输出到显示器的途径,最典型提供了多种把计算结果输出到显示器的途径,最典型的途径是利用的途径是利用C+C+标准库中定义的对象coutcout和插入操作符“”来实现,例如:#include#include using namespace st

6、d;using namespace std;.cout a+b*ccout a+b*c;cout a;cout a;cout b;cout b;cout endl;cout endl;或或cout a+b*c a b endl;cout a+b*c a b endl;输出格式的调整参见第10章第6页,共19页,编辑于2022年,星期一表达式中的类型转换n常量、变量、表达式、函数是程序的基本操作对象常量、变量、表达式、函数是程序的基本操作对象(操作操作数数),它们都显式或隐式与一种数据类型相联系。,它们都显式或隐式与一种数据类型相联系。n两个两个不同数据类型不同数据类型的操作数同时参加运算时,会

7、出现类型的操作数同时参加运算时,会出现类型转换,即将不同的数据类型转换成相同的数据类型,再运算。转换,即将不同的数据类型转换成相同的数据类型,再运算。如 int a=10;float b=a+3.4;n这些类型转换是暂时性的这些类型转换是暂时性的,利用临时存储空间,利用临时存储空间,比如被转换的若是变量比如被转换的若是变量,那么那么变量的值并没有被转换变量的值并没有被转换,只,只是参加当前运算的数值被是参加当前运算的数值被“看作看作”另一种类型的数值而另一种类型的数值而已。已。第7页,共19页,编辑于2022年,星期一n有些类型转换是系统自动进行的,有些类型转换是系统自动进行的,即由编译程序按

8、照某种预定的规则进行自动转换,即由编译程序按照某种预定的规则进行自动转换,这就是这就是隐式类型转换隐式类型转换。如 int a=10;float b=a+3.4;有些类型转换是程序员主动进行的,有些类型转换是程序员主动进行的,即用类型转换操作符明确地指出类型转换,即用类型转换操作符明确地指出类型转换,这就是这就是显式类型转换显式类型转换。如 int a=-10;unsigned int b=3;int c=a+(int)b;第8页,共19页,编辑于2022年,星期一隐式类型转换n隐式类型转换的基本原则是:隐式类型转换的基本原则是:精度低精度低精度高精度高;(参加运算的两个操作数中,精度低的操作

9、数类型将被转换成精度高的那个操作数的类型。)高高 long doubledoublefloatunsigned longlongunsigned低低 int short,char,bool第9页,共19页,编辑于2022年,星期一整型提升转换规则(integral promotions)n对于char、signed char、unsigned char、short int、unsigned short int类型,如果int型能够表示它们的值,则这些类型转换成int,否则,这些类型转换成unsigned int。nbool型转换成int型,false为0;true为1。nwchar_t和枚举类

10、型转换成下列类型中第一个能表示其所有值的类型:int、unsigned int、long int、unsigned long int。第10页,共19页,编辑于2022年,星期一逻辑类型转换规则:非非bool类型的数据参加逻辑运算时,类型的数据参加逻辑运算时,要转换成逻辑类型,转换规则:要转换成逻辑类型,转换规则:零转成零转成 false非零非零转成转成true第11页,共19页,编辑于2022年,星期一隐式类型转换的问题隐式类型转换的问题n隐式转换有时不能满足要求。隐式转换有时不能满足要求。例如:例如:(出错)(出错)int i=-10;unsigned int j=3;i+j将得到错误的结

11、果:将得到错误的结果:4294967289又如:又如:(出错)(出错)int i=-10;unsigned int j=3;ij将得到错误的结果:将得到错误的结果:false再例如:(溢出)再例如:(溢出)int i=2147483647;/int类型中最大的正整数类型中最大的正整数int j=10;i+j将得到错误的结果:将得到错误的结果:-2147483639第12页,共19页,编辑于2022年,星期一显式类型转换(强制类型转换)n类型转换操作符类型转换操作符()()n显示类型转换格式显示类型转换格式:()或或()例如:例如:int i=-10;unsigned int j=3;i+(in

12、t)j将得到正确的结果:将得到正确的结果:-7又如:又如:int i=-10;unsigned int j=3;i(int)j将得到正确的结果:将得到正确的结果:true再如:再如:int i=2147483647,j=10;(double)i+j将得到正确的结果:将得到正确的结果:2147483657.0 第13页,共19页,编辑于2022年,星期一#include using namespace std;int main()float x=2.8,y=3.7,z;int a=5,b=2,c;c=(int)x+y;z=(float)a/b;cout c“z;return 0;实型实型 去掉小

13、数部分去掉小数部分 整型整型整型整型 不变不变 实型实型第14页,共19页,编辑于2022年,星期一类型转换后的数据精度n隐式类型转换和显式类型转换中,隐式类型转换和显式类型转换中,有些是不丢失精度,有些丢失精度。有些是不丢失精度,有些丢失精度。隐式(自动)类型转换:隐式(自动)类型转换:算术类型操作数精度低算术类型操作数精度低精度高(不丢失精度)精度高(不丢失精度)赋值表达式的值赋值表达式的值左值类型(可能丢失精度)左值类型(可能丢失精度)显式(强制)类型转换:显式(强制)类型转换:(可能丢失精度)(可能丢失精度)int a=10;float b=a+3.4;int x=4.3;int a=

14、10;unsigned int b=(unsigned int)a+3;int x=10%(int)3.4;第15页,共19页,编辑于2022年,星期一#include using namespace std;int main()double a=3.3,b=1.1;int i=a/b;cout i endl;return 0;double#include using namespace std;int main()double a=3.3,b=1.1;cout a/b endl;return 0;第16页,共19页,编辑于2022年,星期一表达式中类型转换的次序n含有多个操作符的表达式,类型

15、转换过程是逐含有多个操作符的表达式,类型转换过程是逐步进行的,即:步进行的,即:逐个操作数转换逐个操作数转换如如:int a=3;int b=6;int c=a/b*2.5;结果:结果:1.25?1?0?第17页,共19页,编辑于2022年,星期一C语言的输入方法:scanf()n nC+C+C+C+提供了兼容提供了兼容C C C C的利用库函数把各种类型的数据以多种格式输入给变量的方式。#include /C#include /C#include /C#include /C标准库函数标准库函数int main()int main()int main()int main()int i;int

16、i;int i;int i;double d;double d;double d;double d;scanf(%d%lf,&i,&d);scanf(%d%lf,&i,&d);scanf(%d%lf,&i,&d);scanf(%d%lf,&i,&d);return 0;return 0;return 0;return 0;注意:格式控制字符串的局限注意:格式控制字符串的局限注意:格式控制字符串的局限注意:格式控制字符串的局限 scanf(“scanf(“i=i=%d%d,d=,d=%lf”,&i,&d);%lf”,&i,&d);在输入时,白色字符也要正确输在输入时,白色字符也要正确输入,否则不

17、能读入数据。入,否则不能读入数据。第18页,共19页,编辑于2022年,星期一C语言的输出方法:printf()n nC+C+提供了兼容C C的利用库函数把各种类型的数据以多种的利用库函数把各种类型的数据以多种格式输出到显示器的方式。格式输出到显示器的方式。#include#include#include#include int main()int main()int main()int main()printf(%d,3);printf(%d,3);printf(%d,3);printf(%d,3);printf(%f,3.1415);/%f printf(%f,3.1415);/%f pr

18、intf(%f,3.1415);/%f printf(%f,3.1415);/%f默认保留默认保留6 6 6 6位小数位小数 printf(%.2f,3.1415);printf(%.2f,3.1415);printf(%.2f,3.1415);printf(%.2f,3.1415);printf(%c,$);printf(%c,$);printf(%c,$);printf(%c,$);printf(n);printf(n);printf(n);printf(n);/输出一个换行符输出一个换行符 printf(%d,%.2f,%cn,3,3.1415,$);printf(%d,%.2f,%cn,3,3.1415,$);printf(%d,%.2f,%cn,3,3.1415,$);printf(%d,%.2f,%cn,3,3.1415,$);return 0;return 0;return 0;return 0;第19页,共19页,编辑于2022年,星期一

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁