5.1 C++的运算符
C++的运算符非常丰富,使得C++的运算十分灵活方便。其中有很多运算符都是从C语言继承下来的,它新增的运算符有作用域运算符“::”和成员指针运算符“->”。
和其他高级语言一样,C++语言根据使用运算符的对象之间的关系,将运算符分为算术运算符、关系运算符、逻辑运算符、赋值运算符等。根据使用运算符的对象个数,将运算符分为单目运算符、双目运算符和三目运算符。
5.1.1 运算符的功能和定义
运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C++内置了丰富的运算符,不同的运算符有不同的运算次序。各种运算符的优先级以及功能说明见表5-1。
表5-1 运算符的功能说明
5.1.2 运算符的操作数
运算符也称为操作符,是对程序中的数据进行运算。参与运算的数据称为操作数。变量、常量等通过运算符组合成的表达式,也能作为操作数来构成更复杂的表达式。
对于运算符的操作数,应注意以下几个方面。
(1)运算符的功能和语义。
(2)运算符的操作数,每个运算符对其操作数的个数、类型和值都有一定限制。
(3)每个运算符都有确定的优先级。
(4)运算符的结合性。表5-2给出了C++中的主要运算符的功能、优先级、结合性。表中按优先级从高到低分为18个级别。
5.1.3 运算符的结合性与优先级
如果表达式中有两个或两个以上不同的运算符,则按一定的次序来计算,这种次序被称作优先级。如果表达式中相同的运算符有一个以上,则可从左至右或从右至左地计算,这称作为结合性。
运算符计算时都有一定的顺序,就好像先要算乘除后再算加减一样。优先级和结合性是运算符两个重要的特性,结合性又称为计算顺序,它决定组成表达式的各个部分是否参与计算以及什么时候计算。
见表5-2,将按运算符优先级从高到低列出各个运算符,具有较高优先级的运算符出现在表格的上面,具有较低优先级的运算符出现在表格的下面。在表达式中,较高优先级的运算符会优先被计算。
表5-2 C++运算符优先级与结合性
【例5-1】编写程序,通过运算,了解运算符的结合性。
(1)在Visual Studio 2017中,新建名称为“5-1.cpp”的Project1文件。
(2)在代码编辑区域输入以下代码。
【程序分析】本例定义了5个变量,x、y、m、n和a,并给x、y、m、n赋初值。通过这4个变量的运算,演示运算符的结合性。
在Visual Studio 2017中的运行结果如图5-1所示。
图5-1 运算符的结合性