【学习目标】
熟练掌握C++各种运算符的使用方法。能熟练运用运算符组成需要的表达式。正确使用操作数的类型转换和运算符的优先级顺序和结合性。
【重点和难点】
自增、自减运算符的运用;各个运算符的优先级顺序及其结合性;操作数的类型转换。
【学习方法指导】
要在学习中注意区分运算符、表达式和语句的不同;不同类型的操作数赋值时,尽量进行显式转换,隐式转换容易犯错误;优先级和结合性也容易犯错误,一般说来,表达式中加上圆括号,比较保险,这也可以提高程序的可读性。
【知识点】
算术运算符;自增、自减运算符;关系运算符;逻辑运算符;位运算符
赋值运算符;求字节数运算符;逗号表达式;短路表达式;显式类型转换;隐式类型转换;优先级与结合性
第一节 c++运算符
所谓运算符就是指运算的符号,例如加运算符(+)、乘运算符(*)、取地址运算符(&)等。表达式与运算符密不可分,它由运算符与操作数组合而成,并由运算符指定对操作数要进行的运算,一个表达式的运算结果是一个值。本章中,我们将介绍C++语言基本的运算符、表达式,各种运算符的优先级、结合性,以及不同数据类型的值之间的转换。
C++语言中的运算符是可以让C++语言编译器能够识别的具有运算意义的符号。编译器把这些符号及其组成的表达式翻译成相应的机器代码,就可以由计算机运行得出正确的结果。
其实,就象我们日常生活当中许多东西的名字,如冰箱、电视机等分别代表不同功能的电器设备一样,运算符就是代表C++语言中的各个运算功能的名字,这些名字是由制定C++语言规范的人员确定的。下面给出由运算符组成的表达式的例子:
下面是几个表达式例子。如:
100+200-300*200+1000/20+100%10
a || b && c || d
a = b + c + d*e
a += b++
c -= d--
只要是按C++语法写出的表达式,编译器就能够解释其中的运算符和由运算符、操作数组成的表达式的意义。
第二节 优先级和结合性
当不同的运算符混合运算时,运算顺序是根据运算符的优先级而定的,优先级高的运算符先运算,优先级低的运算符后运算。在一个表达式中,如果各运算符有相同的优先级,运算顺序是从左向右,还是从右向左,是由运算符的结合性确定的。所谓结合性是指运算符可以和左边的表达式结合,也可以与右边的表达式结合。C++运算符的优先级和结合性参见表3-14。
在表3-14中,"单"表示是单目运算符,"双" 表示是双目运算符,"三" 表示是三目运算符。表中有一些运算符,我们还没有介绍,以后我们会在有关的内容中学习。
表3-14 C++运算符的优先级和结合性 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
每种运算符都有一个优先级,优先级是用来标志运算符在表达式中的运算顺序的。优先级高的先做运算,优先级低的后做运算,优先级相同的右结合性决定计算顺序。
大多数运算符都是按从左到右计算,只有三类运算符的结合性是从右到左。他们是:单目、三目和赋值。这一点一定要记住。
第三节 类型转换
3.3 类型转换
int(3.14) // 等价于(int) 3.14 在一般情况下,各种数据都按默认类型参与运算, 当两个不同的数据类型(整型、字符型、实型)进行运算时,数据将进行自动类型转换,转换后再参与运算。 例:指出下面每个语句的执行结果。
上面的自动类型转换也称为隐式转换。 第四节 表达式
1、在表达式中,连续出现两个运算符时,最好用空格符分隔。如: a+++b; (注意:在visual c++中这种写法是错误的,编译将不能通过) 系统将默认为是a++ +b,因系统将按尽量取大的原则来分割多个运算符。如果想执行a加++b,则应写成 a+ ++b; 2、在写表达式中,有时记不清楚运算符的优先级时,可使用括号来确定运算符组合。 |
【本章小结】
介绍了C++基本的各种运算符构成(算术运算符、关系运算符、逻辑运算符、位运算符、条件运算符、赋值运算符、逗号运算符几其它运算符)以及它们的优先级和结合性。同时介绍了由运算符组成的各种表达式、表达式中操作数类型的显式及隐式转换。
自增、自减运算符,前缀式先将操作数增1(或减1),然后取操作数的新值参与表达式的运算。后缀是先将操作数增1(或减1)之前的值参与表达式的运算,到表达式的值被引用之后再做加1(或减1)运算。
关系运算符两边的数值结果必须是类型相同的。
在实现优先级与实际需要不相符时,需要使用括号来改变。
参加运算的两个操作数类型不同时,C++将自动作隐式类型转换,但有时要作强制类形转换。
表达式和语句的一个重要区别是:表达式具有值,而语句是没有值的并且语句末尾要加分号。
一:选择题 |