2.5.2 算术运算符和算术表达式(1)
算术运算符包括基本算术运算符和自增自减运算符。由算术运算符、操作数和括号构成的表达式称为算术表达式。其表达式的值是一个数值,表达式的类型由运算符和运算数确定。
1. 算术运算符
(1) 基本算术运算符
基本算术运算符即在程序中进行基本算术运算(即数学运算)的符号,如表2-8所示。
表2-8 算术运算符
|
运 算 符
|
名 称
|
例 子
|
说 明
|
|
+
|
加
|
a+b
|
双目运算,具有左结合性
|
|
-
|
减
|
a-b
|
双目运算,具有左结合性
|
(续表)
|
运 算 符
|
名 称
|
例 子
|
说 明
|
|
*
|
乘
|
a*b
|
具有左结合性
|
|
/
|
除
|
a/b
|
参与运算量均为整型时,
结果也为整型,向零取整。
如果运算量中有一个是实
型,则结果为双精度实型。
具有左结合性
|
|
%
|
求余
|
a%b
|
只用于整数,具有左结合性
|
|
+
|
取正
|
+a
|
单目运算,具有右结合性
|
|
-
|
取负
|
-a
|
单目运算,具有右结合性
|
(2) 算术运算符求值
所有算术运算符都是双目运算。各运算符的含义与数学中基本相同。一般情况下,加、减、乘、除和取负等运算可以对所有数值类型进行运算,运算结果的数据类型应该与运算量的类型相同。如果两种不同类型的数值进行运算,运算结果的数据类型与表示范围大、精度高的数据保持一致。
注意浮点型除法与整型除法的区别。如果参与运算的两个量均为整型,则除得的结果也为整型(舍去小数);若参与运算的量有浮点型,则除得的结果也为浮点型。例如,10.0/4=2.5,10/4=2。
求余运算即求两个整型数相除的余数,例如,7%3的结果为1。参加求余运算的对象及结果均为整型。另外,求余运算结果的符号与第一个运算量的符号相同。
2. 算术表达式
算术表达式是用算术运算符和括号将数值型常量、变量或函数组建起来的,符合C++语法规则的、有意义的式子。表达式的值是一个数值,表达式的类型由运算符和运算数确定。在书写表达式时应注意与数学上的表达式写法上的区别。
(1) 表达式中所有符号必须一个一个并排写在同一行上,不能写成上标或下标的形式。
(2) 不能省略乘号运算,如数学上的表达式b2-4ac中省略了乘号,但在写成对应的C++语言表达式时,要写成b*b-4*a*c。
(3) 表达式中所有的括号一律写成圆括号,并且括号左右必须配对。如数学上的表达式[(x+y)/(a-b)+c]x,在C++语言中要写成((x+y)/(a-b)+c)*x。
(4) 数学表达式中表示特定含义的符号要写成具体的数值。如数学上的表达式2π,在C++语言中要写成2*3.14。
3. 基本算术运算符的优先级及结合性
在所有算术运算符中,优先级从高到低依次是乘(*)和除(/)、求余(%)、加(+)和减(-)。其中,乘和除是同级运算,加和减是同级运算。当遇到同一级运算符时,按结合性进行运算,算术运算符的结合性是左结合。如果表达式中含有括号,则先计算括号内表达式的值,有多层括号时,先计算内层括号的值,再求外层括号内表达式的值。如1+((2+3)*2)*2=21。