C++中,运算符是用于执行算术、赋值等操作的符号。这篇笔记我们对运算符的使用进行简单的介绍。
算术运算符用于计算加减乘除、取模等运算。
算术运算符 | 说明 | 例子 | 计算结果 |
---|---|---|---|
+ | 加 | 1 + 2 | 3 |
- | 减 | 1 - 2 | -1 |
* | 乘 | 1 * 2 | 2 |
/ | 除 | 2 / 1 | 2 |
% | 取模 | 5 % 3 | 2 |
++ | 前置递增 | a = 2; b == ++a; | a = 3; b = 3; |
++ | 后置递增 | a = 2; b == a++; | a = 3; b = 2; |
-- | 前置递减 | a = 2; b == --a; | a = 1; b = 1; |
-- | 后置递减 | a = 2; b == a--; | a = 1; b = 2; |
下面例子演示了算术运算符的使用。
#include <iostream>
int main() {
int a = 1;
int b = 2;
int sum = a + b;
std::cout << sum << std::endl;
return 0;
}
位运算符主要用于二进制数据操作。
位运算符 | 说明 | 例子 | 计算结果 |
---|---|---|---|
& | 按位与 | a = 0b1010; b = 0b1111; c = a & b; | c = 0b1010; |
| 按位或 | a = 0b1010; b = 0b1111; c = a b; |
c = 0b1111; | ||
^ | 按位异或 | a = 0b1010; b = 0b1111; c = a ^ b; | c = 0b0101; |
~ | 按位取反 | a = 0b1010; b = ~a; | b = 0b0101; |
<< | 左移 | a = 0b1010; b = a << 1; | b = 0b10100; |
>> | 右移 | a = 0b1010; b = a >> 1; | b = 0b101; |
下面是一个使用位运算的例子,代码中我们使用了C++14引入的二进制字面量,它使用0b
开头表示二进制整数,此外我们还使用了std::bitset<N>
将整数转为了固定位的二进制字符串方便打印。
#include <iostream>
#include <bitset>
int main() {
int a = 0b1010;
int b = 0b1111;
int c = a & b;
std::cout << std::bitset<4>(c) << std::endl;
return 0;
}
赋值运算符用于将表达式的值赋予变量。
赋值运算符 | 说明 | 例子 | 计算结果 |
---|---|---|---|
= | 直接赋值 | a = 2; | a = 2; |
+= | 加等赋值 | a = 2; a += 1; | a = 3; |
-= | 减等赋值 | a = 2; a -= 1; | a = 1; |
*= | 乘等赋值 | a = 2; a *= 2; | a = 4; |
/= | 除等赋值 | a = 2; a /= 2; | a = 1; |
%= | 模等赋值 | a = 3; a %= 2; | a = 1; |
下面例子演示了赋值运算符的使用。
#include <iostream>
int main() {
int a = 1;
a += 1;
std::cout << a << std::endl;
return 0;
}
比较运算符用于比较表达式并返回true
或false
。
比较运算符 | 说明 | 例子 | 计算结果 |
---|---|---|---|
== | 等于 | 1 == 2 | false |
!= | 不等于 | 1 != 2 | true |
< | 小于 | 1 < 2 | true |
> | 大于 | 1 > 2 | false |
<= | 小于等于 | 1 <= 2 | true |
>= | 大于等于 | 1 >= 2 | false |
比较运算符常用于if
语句的条件判断,下面例子演示了比较运算符的使用。
#include <iostream>
int main() {
if (1 < 2) {
std::cout << "true" << std::endl;
}
return 0;
}
逻辑运算符包含与、或、非3种。
逻辑运算符 | 说明 | 例子 | 计算结果 |
---|---|---|---|
! | 非 | a = true; b = !a; | a = false; |
&& | 与 | a = true && false; | a = false; |
|| | 或 | a = true || false; | a = true; |
下面例子演示了逻辑运算符的使用。
#include <iostream>
int main() {
int a = 10;
std::cout << (a < 20 && a % 2 == 0) << std::endl;
return 0;
}
三目运算符其实是一种特殊的流程控制结构,它可以简化一些判断逻辑写法,下面是一个例子。
#include <iostream>
int main() {
int a = 10;
a < 20
? std::cout << "a is smaller than 20" << std::endl
: std::cout << "a is bigger or equal than 20" << std::endl;
return 0;
}
三目运算符的写法类似... ? ... : ...
,程序会根据问号前面的表达式是true
还是false
来决定执行冒号前面的部分还是冒号后面的部分。