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。
位运算符的使用格式:
<运算分量><双目运算符><运算分量>
<单目运算符><运算分量>
8其他运算
(1)条件运算符
条件运算是C+ +中唯一的三目运算,与其对应的运算符?:称为条件运算符。条件运算符的使用格式为:
<表达式1>?<表达式2>:<表达式3>
当计算有条件运算符构成的表达式时,首先计算<表达式1>,若其值非0,则计算出<表达式2>的值,并用这个值作为整个表达式的值;若<表达式1>的值为0,则计算出<表达式3>的值,并用这个值作为整个表达式的值。
(2)逗号运算符
C+ +中使用逗号运算符指明对多个表达式进行顺序求值。逗号运算符的使用格式为:
<表达式1>,<表达式2>,……<表达式n>
其中,每个逗号都称为逗号运算符,整个式子称为逗号表达式。上述逗号表达式的求值步骤为:从左向右依次计算<表达式1>、<表达式2>…<表达式n>的值;将<表达式n>(即最右端的表达式)的值作为整个逗号表达式的值。
(3)sizeof运算符
使用运算符sizeof可以进行字长提取操作,因此sizeof运算符又称为字长提取符,它的使用格式为:
sizeof(<运算分量>)
其中,sizeof为关键字;<运算分量>既可以是一个类型名,也可以是一个表达式,当作为<运算分量>的表达式只包含一个变量名时,圆括号()可以省略。
字长提取运算的结果为一个整数,该整数表示指定的类型或变量的字节长度,即在内存中占用的字节(Byte)数。
(4)圆括号运算符
C+ +中不仅将圆括号()归为运算符,而且根据不同的使用方式,可以对圆括号运算符的功能作出以下3种不同的解释:
①圆括号用于函数调用。其格式为:
<函数名>(<实参表>)
②圆括号用于强制类型转换。其格式为:
(<类型名>)<表达式>
③圆括号用于类型构造。其格式为:
<类型名>(<表达式>)
类型构造是指使用圆括号中<表达式>的值来构造一个具有目标数据类型的值,要构造的目标数据类型由<类型名>指定。
④数组下标运算符:[](下标)。
⑤指针运算符:*(取地址)和&(值引用)。
⑥动态存储分配运算符:new(分配)和delete(释放)。
⑦作用域限定运算符:::(类域或全局域)
9优先级和结合性
根据运算符的优先级和结合性,可以将表达式的计算顺序规则总结为以下3条:
(1)优先计算带有括号的子表达式;
(2)在没有括号的部分,依照运算符优先级,由高到低进行计算;
(3)具有相同优先级的运算符,按照结合性规定,依次进行计算。
C+ +运算符分成17个优先级,优先级数字越小,表示运算符优先级越高。具有同一优先级数字的运算符,优先级相同。单目运算符、赋值运算符和复合赋值运算符是右结合的,其余所有运算符都是左结合的。
以上就是小编为您整理计算机二级C++语言程序设计考试运算符和表达式的全部内容,更多精彩请进入程序员栏目查看