运算符代表一个行为。例如,+
是表示加法的运算符。运算符处理两个或多个操作数并生成输出。例如3 + 4 + 5
,这里+
运算符在三个操作数上工作并产生 12 作为输出。
C++ 中的运算符类型
1)基本算术运算符
2)赋值运算符
3)自增和自减运算符
4)逻辑运算符
5)比较(关系)运算符
6)位运算符
7)三元运算符
基本算术运算符
基本算术运算符为:+ - * / %
+
用于加法。-
用于减法。*
用于乘法。/
用于除法。%
用于模数。
注:模运算符返回余数,例如20%5
将返回 0。
算术运算符的例子
输出:
赋值运算符
C++ 中的赋值运算符是:= += -= *= /= %=
num2 = num1
将变量num1
的值赋给变量num2
。num2 += num1
等于num2 = num2 + num1
num2 -= num1
等于num2 = num2 - num1
num2 *= num1
等于num2 = num2 * num1
num2 /= num1
等于num2 = num2 / num1
num2 %= num1
等于num2 = num2 % num1
赋值运算符的示例
输出:
自增和自减运算符
++
和--
:
num++
相当于num = num + 1;
num--
相当于num = num - 1;
自增和自减运算符的示例
输出:
逻辑运算符
逻辑运算符与二进制变量一起使用。它们主要用于条件语句和循环以评估条件。
C++中的逻辑运算符是:&& || !
假设我们有两个布尔变量b1
和b2
。
如果b1
和b2
都为真,则b1 && b2
将返回true
,否则它将返回false
。
如果b1
和b2
都为假,则b1 || b2
将返回false
,否则返回true
。
!b1
将返回与b1
相反的东西,这意味着如果b1
为假则为真,如果b1
为真则返回false
。
逻辑运算符的示例
输出:
关系运算符
我们在 C++中有六个关系运算符:== != > < >= <=
- 如果左侧和右侧都相等,则
==
返回true
- 如果左侧不等于右侧,则
!=
返回 true。 - 如果左侧大于右侧,
>
返回true
。 - 如果左侧小于右侧,
<
返回true
。 - 如果左侧大于或等于右侧,则
>=
返回true
。 - 如果左侧小于或等于右侧,则
<=
返回true
。
关系运算符的示例
输出:
按位运算符
有六个按位运算符:& | ^ ~ << >>
按位运算符执行逐位处理。
num1 & num2
比较num1
和num2
的相应位,如果两个位相等则生成 1,否则返回 0。在我们的例子中它将返回:2,这是00000010
,因为在num1
和num2
的二进制形式中,只有倒数第二位匹配。
num1 | num2
比较num1
和num2
的相应位,如果任一位为 1,则生成 1,否则返回 0。在我们的例子中,它将返回 31,即00011111
。
num1 ^ num2
比较num1
和num2
的相应位,如果它们不相等则生成 1,否则返回 0。在我们的例子中它将返回 29,相当于00011101
。
~num1
是一个补码运算符,只是将位从 0 更改为 1,1 更改为 0。在我们的示例中,它将返回 -12,相当于11110100
。
num1 << 2
是左移位运算符,它将位移到左边,丢弃最左边的位,并将最右边的位赋值为 0。在我们的例子中,输出为 44,相当于00101100
。
注意:在下面的示例中,我们在此移位运算符的右侧提供 2,这是位向左移动两个位置的原因。我们可以更改此数字,并且位将按照移位运算符右侧指定的位数移动。同样适用于右移位运算符。
num1 >> 2
是右移位运算符,它将位向右移动,丢弃最右位,并将最左边的位指定为 0。在我们的例子中,输出为 2,相当于00000010
按位运算符的示例
输出:
三元运算符
此运算符计算布尔表达式并根据结果赋值。
语法:
如果表达式结果为true
,则将冒号(:
)之前的第一个值赋给变量num1
,否则将第二个值赋给num1
。
三元运算符的例子
输出:
杂项运算符
C++ 中很少有其他运算符,如逗号运算符和 sizeof
运算符。我们将在单独的教程中详细介绍它们。
C++ 中的运算符优先级
如果表达式具有多个运算符,则确定首先需要对哪个运算符求值。顶部的运算符具有较高优先级,底部具有较低优先级。
- 一元运算符
++ -- ! ~
-
乘法
* / %
-
加法
+ -
-
移位
<< >>
-
关系
< <= > >=
-
相等
== !=
-
位与
&
-
位异或
^
-
位或
|
-
逻辑与
&&
-
逻辑或
||
-
三元
?:
-
赋值
= += -= *= /= %= >>= <<= &= ^= |=