数学运算符和优先级
运算符的概念
在数学里我们会用加、减、乘、除这些符号来进行计算,在编程里也有类似的符号,叫做运算符。运算符可以对数据进行各种操作,就像我们用工具来完成不同的事情一样。本文我们来学习C++里常用的单目、双目运算符。
单目运算符
单目运算符只需要一个操作数,就好像一个人就能完成的事情。
负号运算符(-)
这个运算符可以把一个数变成它的相反数。比如原来是正数,用了负号运算符就变成负数;原来是负数,就变成正数。
在这个例子中,num 的值是 5,使用负号运算符后,result 的值就变成了 -5。
自增运算符(++)
自增运算符可以让变量的值增加1。它有两种形式:前置自增(++变量名)和后置自增(变量名++)。前置自增是先把变量的值加1,再使用变量的值;后置自增是先使用变量的值,再把变量的值加1。
在这个例子中,前置自增后,a 的值变成了 6,b 的值也是 6;后置自增后,c 的值变成了 6,但 d 的值是 5。
自减运算符(--)
自减运算符可以让变量的值减少1。它也有前置自减(--变量名)和后置自减(变量名--)两种形式,用法和自增运算符类似。
在这个例子中,前置自减后,a 的值变成了 4,b 的值也是 4;后置自减后,c 的值变成了 4,但 d 的值是 5。
双目运算符
双目运算符需要两个操作数,就好像需要两个人一起完成的事情。
加法运算符(+)
加法运算符可以把两个数相加。
在这个例子中,a 的值是 3,b 的值是 5,使用加法运算符后,result 的值是 8。
减法运算符(-)
减法运算符可以用一个数减去另一个数。
在这个例子中,a 的值是 8,b 的值是 3,使用减法运算符后,result 的值是 5。
乘法运算符(*)
乘法运算符可以把两个数相乘。
在这个例子中,a 的值是 4,b 的值是 6,使用乘法运算符后,result 的值是 24。
除法运算符(/)
除法运算符可以用一个数除以另一个数。要注意,如果两个操作数都是整数,结果会只保留整数部分。
在这个例子中,a 的值是 10,b 的值是 3,使用除法运算符后,result 的值是 3,因为只保留了整数部分。
取模运算符(%)
取模运算符可以得到两个数相除的余数。
在这个例子中,a 的值是 10,b 的值是 3,使用取模运算符后,result 的值是 1,因为 10 除以 3 的余数是 1。
运算符的优先级
以下是C++中相关运算符的优先级表,按从高到低排列:
| 优先级 | 运算符 | 名称/描述 | 结合性 |
|---|---|---|---|
| 1 | ++(后置)、--(后置) | 后置自增/自减 | 从左到右 |
| 2 | ++(前置)、--(前置)、+(正号)、-(负号) | 前置自增/自减、单目运算符 | 从右到左 |
| 3 | *、/、% | 乘法、除法、取模 | 从左到右 |
| 4 | +(加法)、-(减法) | 双目加法、减法 | 从左到右 |
详细说明:
-
后置自增/自减 (
a++,a--)
优先级最高,先返回当前值,再对操作数进行自增/自减。 -
前置自增/自减 (
++a,--a) 和单目运算符 (+a,-a)
先对操作数进行自增/自减或符号运算,再返回结果。 -
乘法、除法、取模 (
*,/,%)
从左到右结合,先计算乘除/取模,再处理加减。 -
双目加法、减法 (
+,-)
最低优先级,从左到右结合。