算数运算符
运算符 | 描述 | 例子 |
---|---|---|
+ | 两个数字相加 | 两个变量a + b得到两个变量之和 |
- | 两个数字相减 | - |
* | 两个数字相乘 | - |
/ | 两个数字相除 | - |
% | 两个数字相除后取余数 | 8 % 3 = 2 |
-- | 一个数字递减 | 变量a:a-- 、--a |
++ | 一个数字递增 | 变量a: a++ 、 ++a |
- 其中递增和递减运算符在左边和在右边效果不一样
- 单独存在时都是递增和递减,如果和别的组合运算就会不一样
- 例如:
#include <iostream>using namespace std;int main() {int a = 5;int b = 3;int c = a + ++b;// 因为之前b+了1,再改回来b = 3;int d = a + b++;cout << "c的值,先++" << c << endl;cout << "d的值,后++" << d << endl;return 0; }
a + b++是先用a+b赋值给c,然后再把b自增1
a + ++b是先把b自增1然后再把a+b赋值给d
逻辑运算符
表达式常用于判断
运算符 | 名称 | 描述 |
---|---|---|
&& | 逻辑与 | a && b 其中都为true时结果为true |
|| | 逻辑或 | a || b 其中只有一个为true结果为true,都为false结果为false |
! | 逻辑非 | !a 如果a为flase,则结果为true,如果a为true结果为false |
关系运算符
常用于判断
- 两个数字符合表达式则返回true,不符合则返回false
运算符 | 名称 |
---|---|
< | 小于 |
> | 大于 |
== | 等于 |
>= | 大于等于 |
<= | 小于等于 |
!= | 不等于 |
位运算符
- 位运算符就是操作二进制上的位
运算符 | 描述 |
---|---|
& | 按位进行与操作 |
| | 按位进行或操作 |
~ | 按位进行取反操作 |
^ | 按位进行异或操作 |
<< | 按位进行左移 |
>> | 按位进行右移 |
-
例子
&运算
:例如我们有两个变量a和b分别为60和13bitset<32>
为#include <bitset>
导入- 原用法为
std::bitset<32>
表示把十进制转为32位的二进制表示 - 因为前面定义了命名空间所以省略了
std::
bitset<32> .to_string()方法把二进制转为二进制字符串
stoi(binary_c.to_string(), nullptr, 2)
把二进制字符串转为十进制数字
#include <iostream> #include <bitset>using namespace std;int main() {int a = 60;int b = 13;// 十进制转为二进制表示bitset<32> binary_a(a);bitset<32> binary_b(b);cout << "a的二进制表示:" << binary_a << endl;cout << "b的二进制表示:" << binary_b << endl;// 按位与操作之后的二进制数据bitset<32> binary_c = binary_a & binary_b;// 二进制数据转为二进制字符串再转为十进制int c = stoi(binary_c.to_string(), nullptr, 2);cout << "a & b的二进制表示:" << binary_c << endl;cout << "a & b的十进制表示:" << c << endl;return 0; }
- 根据结果可以看到60 & 13的结果是12
- 是根据二进制的位来进行运算的
-
例子:
|运算
-
例子:
~取反运算
#include <iostream> #include <bitset>using namespace std;int main() {int a = 60;int b = ~a;bitset<32> binary_a(a);bitset<32> binary_b(b);cout << "a的二进制表示:" << binary_a << endl;cout << "~a的二进制表示:" << binary_b << endl;cout << "~a的十进制表示:" << b << endl;return 0; }
-
例子:
^异或运算
- 比较两个位的不同,如果a和b相同结果则为0,不相同结果为1
- 比较两个位的不同,如果a和b相同结果则为0,不相同结果为1
-
例子:
<<左移运算
#include <iostream> #include <bitset>using namespace std;int main() {int a = 60;int b = a << 2;bitset<32> binary_a(a);bitset<32> binary_b(b);cout << "a的二进制表示:" << binary_a << endl;cout << "a << 2的二进制表示:" << binary_b << endl;cout << "a << 2的十进制表示:" << b << endl;return 0; }
-
例子:
>>右移运算
赋值运算符
- 一边赋值一边运算
- 之前的运算符除逻辑运算符和关系运算符外都可以一边赋值一边运算
- 例:
a+=1
就是a = a + 1
;a &= 10
就是a = a & 10
其他
sizeof
运算符返回大小
#include <iostream>using namespace std;int main() {int a = 1;short b= 1;long c = 1;long long d = 1;double e = 10.2;cout << sizeof a << endl;cout << sizeof b << endl;cout << sizeof c << endl;cout << sizeof d << endl;cout << sizeof e << endl;cout << sizeof(int) << endl;return 0;
}
- int为4个字节
- short为2个字节
- long为4个字节
- long long为8个字节
- double为8个字节
- ……