1. 算术运算符
算术运算符用于执行代码的运算,C++支持的算术运算符如下所示:
假设a = 6,b = 3
运算符 | 描述 | 实例 |
---|---|---|
+ | 两个操作数相加 | a + b = 9 |
- | 两个操作数相减 | a - b = 3 |
* | 两个操作数相乘 | a * b = 18 |
/ | 两个操作数相除 | a / b = 2 |
% | 取模运算符 | a % b = 0 |
++ | 自增运算符 | a++后为7 |
– | 自减运算符 | a–后为5 |
运算符使用注意事项:
- / 除法运算符
1)两个整数操作数相除,结果依然为整数,小数部分去除;
2)除数不能为0,否则会报错;- %取模运算符
1)取模运算是基于整数操作数的,小数不能进行取模运算;
2)除数不能为0,否则会报错;- ++(–)递增(递减)运算符
1)分为前置递增(递减)与后置递增(递减),如:++a 、a++ 、–a 、a-- ;
2)前置递增(递减)与后置递增(递减)都是让变量+(-)1;但是前置递增(递减)是变量先+(-)1,然后再进行表达式的运算;而后置递增(递减)是变量先参与表达式的运算,再+(-)1;
- 代码演示
#include <iostream>
using namespace std;
int main() {
//1、加减乘数运算(+ - * /)
int a1 = 10;
int b1 = 8;
int b = 0;
cout << a1 + b1 << endl;
cout << a1 - b1 << endl;
cout << a1 * b1 << endl;
cout << a1 / b1 << endl; //两个整数相除,结果依然是整数,小数部分将去除
//cout << a1 / b << endl; //报错,两个数相除,除数不能为0
double a2 = 5.2;
double b2 = 2.1;
cout << a2 + b2 << endl;
cout << a2 - b2 << endl;
cout << a2 * b2 << endl;
cout << a2 / b2 << endl;
//2、取模运算(%)基于整数
cout << a1 % b1 << endl;
cout << b1 % a1 << endl;
//cout << a2 % b2 << endl; //两个小数是不能进行取模运算的
//cout << a1 % b << endl; //报错,取模运算时,除数不能为0
//3、递增(前置递增、后置递增)、递减(前置递减、后置递减)
int A = 10;
int B = 10;
int C = 10;
int D = 10;
++A; //让变量+1
B++; //让变量+1
--C; //让变量-1
D--; //让变量-1
cout << "前置递增后为: " << A << endl;
cout << "后置递增后为: " << B << endl;
cout << "前置递减后为: " << C << endl;
cout << "后置递减后为: " << D << endl;
//前置递增/递减 和 后置递增/递减的区别
int add1 = ++A * 10; //变量先+1后,再进行表达式的运算
int add2 = B++ * 10; //先进行表达式的运算,再将变量+1
int sub1 = --C * 10;
int sub2 = D-- * 10;
cout << "add1 = " << add1 << endl;
cout << "add2 = " << add2 << endl;
cout << "sub1 = " << sub1 << endl;
cout << "sub2 = " << sub2 << endl;
cout << "---前置递增后为: " << A << endl;
cout << "---后置递增后为: " << B << endl;
cout << "---前置递减后为: " << C << endl;
cout << "---后置递减后为: " << D << endl;
system("pause");
return 0;
}
输出结果:
2. 赋值运算符
赋值运算符用于将表达式的值赋给变量,C++支持的赋值运算符如下所示:
运算符 | 描述 | 实例 |
---|---|---|
= | 赋值运算符,将右边的操作数的值赋给左边操作数 | c = a + b |
+= | 加等于赋值运算符,将左边的操作数加上右边操作数的结果赋值给左边的操作数 | 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 |
- 代码演示
#include <iostream>
using namespace std;
int main() {
//等于=
int a = 10;
a = 100;
cout << a << endl;
//加等于+=
a = 10;
a += 2;
cout << a << endl;
//减等于-=
a = 10;
a -= 2;
cout << a << endl;
//乘等于*=
a = 10;
a *= 2;
cout << a << endl;
//除等于/=
a = 10;
a /= 2;
cout << a << endl;
//模等于%=
a = 10;
a %= 2;
cout << a << endl;
system("pause");
return 0;
}
输出结果:
3. 关系(比较)运算符
关系运算符用于表达式的比较,返回一个真值或者假值,C++支持的关系运算符如下:
假如:a = 3,b = 6
运算符 | 描述 | 实例 |
---|---|---|
== | 比较两个操作数的值是否相等,相等则为真,否则为假 | a == b为假 |
!= | 比较两个操作数的值是否相等,不等为真,否则为假 | a != b为真 |
大于> | 比较两个操作数的值的大小,左值大为真,否则为假 | a > b 为假 |
< | 比较两个操作数的值的大小,左值大为假,否则为真 | a < b为真 |
大于等于>= | 比较两个操作数的值的大小,左值大于等于右值为真,否则为假 | a >= b为假 |
<= | 比较两个操作数的值的大小,左值小于等于右值为真,否则为假 | a <= b为真 |
- 代码演示
#include <iostream>
using namespace std;
int main() {
// ==
int a = 10;
int b = 12;
cout << (a == b) << endl;
// !=
cout << (a != b) << endl;
// <
cout << (a < b) << endl;
// >
cout << (a > b) << endl;
// <=
cout << (a <= b) << endl;
// >=
cout << (a >= b) << endl;
system("pause");
return 0;
}
输出结果:
4. 逻辑运算符
逻辑运算符用于根据表达式的值返回真值或假值,C++支持的逻辑运算符如下所示:
假设a = 1,b = 0
运算符 | 描述 | 实例 |
---|---|---|
&& | 逻辑与运算符,若两个操作符都为1,则条件为1 | a && b为0 |
ll | 逻辑或运算符,若两个操作符中任意一个位1,则条件为1 | a ll b为1 |
! | 逻辑非运算符,用来逆转操作数的逻辑状态,若条件为1,则逻辑非运算将使其为0 | !a 为0 |
- 代码演示
#include <iostream>
using namespace std;
int main() {
// 非!
int a = 10;
int b = 0;
cout << !a << endl << !b << endl;
// 与&&
cout << (a && b) << endl;
// 或||
cout << (a || b) << endl;
system("pause");
return 0;
}
输出结果:
5. 杂项运算符
C++支持的其他一些重要的运算符如下所示:
运算符 | 描述 |
---|---|
sizeof | 返回变量占用内存的长度 |
condition ? x : y | 三目操作符(条件运算符),若条件满足,值为x,否则值为y |
, | 逗号运算符,会执行一系列运算,整个逗号表达式的值是以逗号分隔的列表中的最后一个表达式的值 |
.(点)和->(箭头) | 成员运算符,用于引用类、结构体和共用体的成员 |
cast | 强制转换运算符,把一种数据类型转换为另一种数据类型,如int(3.14159),将返回3 |
& | 指针运算符&,返回变量的地址。如&a;将会给出变量的实际地址 |
* | 指针运算符指向一个变量。如p;指向变量p |
6.运算符的优先级
运算符的优先级确定表达式中项的组合,这会影响到一个表达式如何计算。运算符的优先级见: