C++自学整理_03
一. 总结
不多bibi,一口气总结在C++中的所有运算符。
二. 算术运算符
假设此处变量A的值为10,变量B的值为5
运算符 | 描述 | 实例 |
---|---|---|
+ | 前后两数相加 | A + B 得到 15 |
- | 前后两数相减 | A - B 得到 5 |
* | 前后两数相乘 | A * B 得到 50 |
/ | 前后两数相除 | A / B 得到 2; 但 10 / 4 也会得到 2,而非 2.5, 解决办法:10.0 / 2 得到 2.5 |
% | 除余 | A % B 得到0 |
++ | 自增运算符 | A++ 得到 11 |
- - | 自减运算符 | A- - 得到 9 |
三. 关系运算符
假设此处变量A的值为10,变量B的值为5 (变量也可为字符串等其他数据类型)
运算符 | 描述 | 实例 |
---|---|---|
== | 检查前后两个变量是否相等,相等返回 true , 不相等返回 false | ( A == B) 得到 假 |
!= | 检查前后两个变量是否相等,不相等返回 true , 相等返回 false | (A != B)得到 真 |
> | 检查左边变量是否大于右边变量 ,大于返回true ,不大于返回 false | (A > B) 得到 真 |
< | 检查右边变量是否大于左边变量 ,大于返回true,不大于返回 false | (A < B) 得到 假 |
>= | 检查左边变量是否大于等于右边变量 ,大于等于返回true ,不大于等于返回 false | (A >= B)得到 真 |
<= | 检查左边变量是否小于等于右边变量 ,小于等于返回true ,不小于等于返回 false | (A<=B)得到 假 |
四. 逻辑运算符
假设此处变量A的值为1 此处代表true,变量B的值为0 此处代表false(变量可以为各种适用条件)
运算符 | 描述 | 实例 |
---|---|---|
&& | 如果前后两个操作均为true,则条件为true | (A && B) 得到 false |
|| | 如果前后两个操作中任意一个为true,则条件为true | (A|| B) 得到 true |
! | 用来逆转操作的逻辑状态,如果条件为true则逆转为false,反之为true | ! (A && B) 得到 false |
五. 位运算符
p | q | p & q (与) | p | q (或) | p ^ q (异或,前后不同true) | ~(p ^ q) (同或,前后相同true) | ~p (取反) | ~q (取反) |
---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 |
1 | 1 | 1 | 1 | 0 | 1 | 0 | 0 |
1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 |
代码演示:
#include <iostream>
using namespace std;
int main()
{
unsigned int a = 60; // 60 = 0011 1100
unsigned int b = 13; // 13 = 0000 1101
int c = 0;
c = a & b; // 12 = 0000 1100
cout << "Line 1 - c 的值是 " << c << endl ;
c = a | b; // 61 = 0011 1101
cout << "Line 2 - c 的值是 " << c << endl ;
c = a ^ b; // 49 = 0011 0001
cout << "Line 3 - c 的值是 " << c << endl ;
c = ~a; // -61 = 1100 0011
cout << "Line 4 - c 的值是 " << c << endl ;
c = a << 2; // 240 = 1111 0000
cout << "Line 5 - c 的值是 " << c << endl ;
c = a >> 2; // 15 = 0000 1111
cout << "Line 6 - c 的值是 " << c << endl ;
return 0;
}
/*
运算结果
Line 1 - c 的值是 12
Line 2 - c 的值是 61
Line 3 - c 的值是 49
Line 4 - c 的值是 -61
Line 5 - c 的值是 240
Line 6 - c 的值是 15
*/
五. 赋值运算符
运算符 | 描述 | 实例 |
---|---|---|
= | 简单的赋值运算符,把右边操作数的值赋给左边操作数 | C = A + B 将把 A + B 的值赋给 C |
+= | 加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边 | C += A 相当于 C = C + A |
-= | 减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边 | C -= A 相当于 C = C - A |
*= | 乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边 | C *= A 相当于 C = C * A |
/= | 除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边 | C /= A 相当于 C = C / A |
%= | 求模且赋值运算符,求两个操作数的模赋值给左边 | C %= A 相当于 C = C % A |
<<= | 左移且赋值运算符 | C <<= 2 等同于 C = C << 2 |
>>= | 右移且赋值运算符 | C >>= 2 等同于 C = C >> 2 |
&= | 按位与且赋值运算符 | C &= 2 等同于 C = C & 2 |
^= | 按位异或且赋值运算符 | C ^= 2 等同于 C = C ^ 2 |
| = | 按位或且赋值运算符 | C | = 2 等同于 C = C |
代码演示:
#include <iostream>
using namespace std;
int main()
{
int a = 21;
int c ;
c = a;
cout << "Line 1 - = 运算符实例,c 的值 = : " <<c<< endl ;
c += a;
cout << "Line 2 - += 运算符实例,c 的值 = : " <<c<< endl ;
c -= a;
cout << "Line 3 - -= 运算符实例,c 的值 = : " <<c<< endl ;
c *= a;
cout << "Line 4 - *= 运算符实例,c 的值 = : " <<c<< endl ;
c /= a;
cout << "Line 5 - /= 运算符实例,c 的值 = : " <<c<< endl ;
c = 200;
c %= a;
cout << "Line 6 - %= 运算符实例,c 的值 = : " <<c<< endl ;
c <<= 2;
cout << "Line 7 - <<= 运算符实例,c 的值 = : " <<c<< endl ;
c >>= 2;
cout << "Line 8 - >>= 运算符实例,c 的值 = : " <<c<< endl ;

c &= 2;
cout << "Line 9 - &= 运算符实例,c 的值 = : " <<c<< endl ;
c ^= 2;
cout << "Line 10 - ^= 运算符实例,c 的值 = : " <<c<< endl ;
c |= 2;
cout << "Line 11 - |= 运算符实例,c 的值 = : " <<c<< endl ;
return 0;
}
/*
运算结果
Line 1 - = 运算符实例,c 的值 = 21
Line 2 - += 运算符实例,c 的值 = 42
Line 3 - -= 运算符实例,c 的值 = 21
Line 4 - *= 运算符实例,c 的值 = 441
Line 5 - /= 运算符实例,c 的值 = 21
Line 6 - %= 运算符实例,c 的值 = 11
Line 7 - <<= 运算符实例,c 的值 = 44
Line 8 - >>= 运算符实例,c 的值 = 11
Line 9 - &= 运算符实例,c 的值 = 2
Line 10 - ^= 运算符实例,c 的值 = 0
Line 11 - |= 运算符实例,c 的值 = 2
*/
六. 各种运算符的优先级
参考:菜鸟教程之C++运算符:https://www.runoob.com/cplusplus/cpp-operators.html