2.4 运算符和表达式
1运算符和表达式的概念
C+ +语言中的运算符又称为操作符,是用来对数据进行运算的符号。
C+ +语言中的运算符可以根据其运算分量个数的多少分为单目(或一元)运算符、双目(或二元)运算符和三目(或三元)运算符3类。
运算符可能是一个字符,也可能由两个或三个字符组成,还有一些运算符是C+ +关键字。
2运算类型与运算符
C+ +包含多种不同种类的运算。每一种运算与其他运算的区别在于以下3个方面:
(1)参加运算的运算分量的数量和类型;
(2)运算结果的数据类型;
(3)运算的具体操作。
3赋值运算
赋值运算是一种双目运算,其形式为:
=
右运算分量为一个表达式。“=”为赋值运算符(与数学中的等号含义不同)。左运算分量为与右运算分量类型相同的变量。
赋值运算的具体操作为:先计算右端表达式的值,然后把该值赋给左端变量。
4算术运算符和算术表达式
算术运算是指int型、float型、double(也包括char型)的数值类数据计算后,得到同一类型数据的运算。算术运算中所使用的运算符称为算术运算符。
单目算术运算符包括:-(单减)、+ +(增量)和- -(减量)。
单减运算的格式为:-
单减运算相当于对运算分量取相反数,例如:-a,-(x+y)。
增量运算有两种形式。
前缀增量:+ +
后缀增量:+ +
双目算术运算符包括:+(加)、-(减)、*(乘)、/(除)和%(取余)。它们的含义与数学上相同。该类运算的运算分量为任一种数值类型,即任一种整数类型和任一种实数类型。
由算术运算符(包括单目和双目)连接运算分量而组成的式子称为算术表达式。每个算术表达式的值为一个数值,其类型按照以下规则确定:
(1)当参加运算的两个运算分量均为整型时(但具体类型可以不同,如一个为int型,另一个为char型),则运算结果为int型。
(2)当参加运算的两个运算分量中至少有一个是单精度型,并且另一个不是双精度型时,则运算结果为float型。
(3)当参加运算的两个运算分量中至少有一个是双精度型时,则运算结果为双精度型。
5关系运算符和关系表达式
C+ +语言提供了6种关系运算符,它们是:
(大于)、> =(大于等于)、= =(等于)、! =(不等于)
这6种运算符都是双目运算符,用来比较两个运算分量的大小,运算结果为逻辑型值true或false(它们分别对应着整数1和0。由一个关系运算符连接前后两个数值表达式而构成的式子称为关系表达式,简称关系式。当一个关系式成立时,则计算结果为逻辑值是(true),否则为逻辑值假(false)
关系运算符的使用格式为:
6逻辑运算符和逻辑表达式
C+ +语言提供了3种逻辑运算符,它们是:
!(逻辑非)、&&(逻辑与)、(逻辑或)
其中,!为单目运算符,&&和为双目运算符。
逻辑运算符的使用格式为:
逻辑运算的具体操作步骤为:
(1)计算两边运算分量的值;
(2)若运算分量的值不是逻辑型,则自动转换为逻辑型,即以0值为假(即false),非0值为真(即true);
(3)按不同逻辑运算符计算返回值。
7位运算
C+ +提供6种位运算符。
(1)“&”是按位与运算符,它将两个运算分量的对应二进制位进行与操作。基中,0 和0与得0,0和1与得0,1和0与得0,1和1与得1。
(2)“|”是按位或运算符,它将两个运算分量的对应二进制位进行或操作。其中,0和0或得0,0和1或得1,1和0或得1,1和1或得1。
(3)“^”是按位异或运算符,它将两个运算分量的对应二进制位进行异或操作。其中,0和0异或得0,0和1异或得1,1和0异或得1,1和1异或得0。
(4)“>>”是按位右移运算符,由于右移的位数为右边运算分量的值,所以右边运算分量的值必须是一个整数。
(5)“<
(6)“~”是按位取反运算符,它将运算分量的对应二进制数的每一位进行取反操作。其中,0取反得1,1取反得0。
位运算符的使用格式: