版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
运算符和表达式-1C++中的运算符和表达式1运算符2表达式运算符和表达式在C++的编程世界中,运算符和表达式就像是数学运算中的公式一样,是必需的。正确、灵活地使用运算符和表达式,需要编程开发者有扎实的基本功。认真、深入地学习本课,将助你在编程之路上前行,迈步更加坚实。C++中的运算符和表达式C++各种运算符的使用方法,以及由运算符组成的表达式,从而使你正确使用操作数的类型转换和运算符的优先级顺序和结合性。认真、深入学习这一章,将助你在编程之路上前行,迈步更加坚实。运算符在C++语言中,包含多种运算符,不同运算符有不同的运算次序,比如“*”、“/”的优先级高于“+”、“-”的优先级。如果表达式中相同运算符有一个以上,则可以从左至右或从右至左地计算它,这称作为结合性。“+”、“-”、“*”和“/”的结合性都是从左至右的。表达式表达式是由运算符、操作数(常量、变量、函数等)和括号按照一定的规则组成的式子。常量、变量和函数可认为是最简单的表达式。表达式可以嵌套。每个表达式都有一个值。在计算时要考虑运算符的优先级、结合性及数据类型的转换。计算机中的表达式都要写在一行上。表达式有算数、赋值、关系、逻辑,逗号等。在表达式的后边加个分号就是表达式语句。除控制语句外,几乎都是表达式语句。算术运算符和表达式1基本算术运算符2算术运算符和算术表达式3自加和自减运算符基本算术运算符基本的算术运算有加法、减法、乘法、除法和取模(求余数),下表基本算术运算符说明。运算符结合型乘法*从左至右除法/取模%加法+减法-算术运算符和算术表达式1.加、减、乘运算inta,b,c;a=10;b=5;c=a+b*3-1;输出c的结果是24。因为“*”的优先级高于“+”和“-”,并且结合性为右结合,所以先算b*3,然后算a加上b与3的乘积15,最后算减法-1,得到结果b=24。2.取模运算21%6 //结果是34%2 /结果是04.0%2 //程序报错,%运算符要求左右必须为整数取模运算“%”,要求运算符两边必须都是整数,如果任何一边不是整数,程序就会报错。算术运算符和算术表达式3整除运算5/4 //结果是14/5 //结果是0当/运算符用于两个整数相除时,如果商含有小数部分,将被截掉,不进行四舍五入。4浮点除运算5/4.0 //结果是1.254.0/5 //结果是0.8要进行通常意义的除运算,则至少应保证除数或被除数中有一个是浮点数或双精度数,可以在参加运算的整数值后补上小数点与0作为双精度(double)常量参加运算。算术运算符和算术表达式使用算术运算符需要注意4个问题。(1)“/”运算符的两个运算对象均为整数时,其结果是整数,如果有一个是浮点型数据,其结果是浮点数;(2)取模运算符“%”要求参与运算的两个数均为整数;(3)遵循算术的自然特征,例如禁止除数位0;(4)防止数据长度的溢出。自加和自减运算符++(自增)、–
–(自减)是C++中使用方便且效率很高的两个运算符,它们都是单目运算符,运算顺序按照从右至左。1自加自减单独运算i++; //++后置--j; //--前置2自加前置运算后直接赋值inti=5;x=++i; //i先加1(增值)后再赋给xy=i; //i=6,x=6,y=6自加和自减运算符3自加前置运算后再赋值inti=5;++i; //i自加1,值为6x=y=i; //i=6,y=6,x=64自加后置运算后直接赋值inti=5;x=i++; //i赋给x后再加1y=i; //x=5,i=6,y=65自加后置运算后再赋值inti=5;i++;x=y=i; //i=6,y=6,x=6自加和自减运算符由于++、–
–运算符内含了赋值运算,所以运算对象只能赋值,不能作用于常量和表达式。比如5++、(x+y)++都是不合法的。【范例-1】计算自加自减表达式的值关系运算符和表达式1关系运算符2关系表达式关系运算符在解决许多问题时都需要进行情况判断,C++中提供了关系运算符用于比较运算符两边的值。比较后返回的结果为布尔常量true或false。运算符结合性小于<小于等于<=大于>大于等于>=从左至右等于==不等于!=关系表达式1整数和整数的关系表达式a=1;b=2;c=3;d=4;a+b>c+d“+”的优先级高于“>”,所以先分别求出a+b和c+d的值,然后进行关系比较,运算结果false。关系表达式2字符和字符的关系表达式'a'<'b'+'c'“<”右边需要求算术运算和,所以字符‘b’和‘c’分别由字符型隐式的转换为整型98和99,求和结果为197,“<”左边的字符型也需要转换为整型96才能进行比较,整个表达式的值为true。关系表达式3关系表达式连用a>b>=c>d关系运算符优先级相同,所以按照从左至右依次计算。假设a=1,b=2,c=0,d=4,先计算a>b的值为false,然后计算false>=c,因为“>=”两边数据类型不一致,布尔类型false转换为整型0,0>=0比较结果为true,最后计算true>3,true转换为数值型1,1>4比较结果为false,所以整个表达式结果为false。关系表达式关系运算符的比较运算是由两个等号组成,不要误写为赋值运算符=。关系表达式判断实数(float)是否相等,对下面两个表达式分析一下。等于x==y应写成fabs(x–y)<1e–6不等于x!=y应写成fabs(x–y)>1e–6fabs(x–y)<1e–6表示x和y的差的绝对值小于0.000001,说明x和y的差值已经非常小,可以认为两者相同。逻辑运算符和表达式5.4.1逻辑运算符5.4.2逻辑表达式逻辑运算符和表达式公司开会,需要对某个决议进行表决,只有全票通过,决议才能通过,只要有一票不通过,决议就通不过,如果用逻辑关系来描述,这叫做“与”;还是这个公司进行,只要有一票反对,表决结果就是反对,只有大家都不反对,表决结果才是不反对,如果用逻辑关系来描述,这叫做“或”;其中某一票由赞同变为反对,或者由反对变为赞同,这叫做“非”。逻辑运算符逻辑运算符是用于实现逻辑运算和逻辑的判断,返回类型是布尔(bool)型。下表为逻辑运算符。运算符优先级逻辑求反!从左至右逻辑与&&逻辑或||逻辑表达式在实际应用逻辑表示式之前,我们需要明确逻辑运算表达式有哪些,结果是怎么样的。下面我们就列出逻辑运算关系表逻辑表达式结果逻辑表达式结果0&&0false0&&1false1&&0false1&&1true0||0false0||1true1||0true1||1true!0true!1false逻辑表达式假设a=10,b=5,c=–3,分析下面表达式的结果。!a值为false非0数求非运算,结果为false;相反为0的数求非运算,结果为true。a&&b值为true&&两边都是非0数值,结果为true。a||b值为true||两边只要有一边数值不为0,结果就为true。a+c>=b&&b值为true因为“+”的优先级高于“>=”,先计算a+c得7,再与b比较,7大于等于5成立,结果为true,转换为数值类型1,最后再做逻辑与运算,1和b逻辑与结果得true。条件运算符和表达式条件表达式?:A?B:C其中,A,B和C分别是3个表达式。该运算符的功能如下说明。先计算A;如果A的值为true(非0),返回B的值作为整个条件运算表达式的值;如果A的值为false(0),返回C的值作为整个条件运算表达式的值。条件运算表达式的返回类型将是B和C这两个表达式中数据类型高的那种类型。简单条件表达式a=(x>y?12:10.0);若x>y(值为true),将12赋给a,否则a=10.0但a的类型最后都是double。5.6
赋值运算符和表达式5.6.1赋值运算符5.6.2赋值表达式赋值运算符=+=-=*=/=%=&=^=|=>>=<<=&&=||=从右至左赋值表达式1简单赋值语句inti=100;//变量名为i的地址中内存放数据是100chara='A',b,c;//声明三个字符型变量,同时变量a赋值为字符‘A‘/*变量b的值为‘A‘+1,即98,但是b是字符型,98再转换为字符型数据’B‘,变量c的值等于变量b的值’B‘。*/c=b=a+1;如果a的地址是2000,此时该地址中存放的数据是'A';则b的地址是2001,此时该地址中存放的数据是'B';则c的地址是2002,此时该地址中存放的数据也是'B'。赋值表达式2复合赋值语句*=等价于x=x*y对赋值运算还有下列几点说明。简练在C++中还可以连续赋值,赋值运算符具有右结合性比如:x=y=2.6;//赋值运算符是从右至左计算的,所以表示式相当于:x=(y=2.6),根据优先级,先计算括号里面的赋值语句,再把y的值赋值给x。再有:a=b=3+8;//按照右结合,先计算3+8,然后将11赋给b,再将b的值11赋给a赋值表达式【范例-2】赋值运
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四川电力职业技术学院《设计色彩(二)》2023-2024学年第一学期期末试卷
- 四川大学锦江学院《信息系统开发与应用》2023-2024学年第一学期期末试卷
- 四川大学《智能建筑环境学》2023-2024学年第一学期期末试卷
- 集团购销合同范例
- 私立华联学院《小学队工作理论与实践》2023-2024学年第一学期期末试卷
- 铲车供料合同范例
- 货款缴纳合同范例
- 基于科技创新的企业金融管理研究-以知识产权为对象
- 采购合金颗粒合同范例
- 物流报关合同范例
- 糖果行业大数据分析-洞察分析
- 往来冲账合同范例
- 土木工程CAD-终结性考核-国开(SC)-参考资料
- 2024年《形势与政策》知识考试题库(含答案)
- 中心静脉深静脉导管维护操作评分标准
- 广东省学位英语历年真题及答案
- 复合风管施工方案
- XX年度零星维修项目招标文件范本
- 《甲方认质认价确认单》
- 三大国际关系理论对国际体系的不同认识
- 藏文格与英语介词功能对比研究
评论
0/150
提交评论