C++ 运算符用于执行各种操作,包括算术、逻辑、位运算、关系运算等。下面是 C++ 中主要的运算符分类及其讲解。
1. 算术运算符(Arithmetic Operators)
用于数学计算。
运算符 | 作用 |
---|---|
+ | 加法 |
- | 减法 |
* | 乘法 |
/ | 除法 |
% | 取模(求余数,仅适用于整数) |
示例:
#include <iostream>
using namespace std;
int main() {
int a = 10, b = 3;
cout << "a + b = " << (a + b) << endl;
cout << "a - b = " << (a - b) << endl;
cout << "a * b = " << (a * b) << endl;
cout << "a / b = " << (a / b) << endl; // 3,整数除法
cout << "a % b = " << (a % b) << endl; // 1
return 0;
}
2. 关系运算符(Relational Operators)
用于比较两个值,返回 true
(1)或 false
(0)。
运算符 | 作用 |
---|---|
== | 等于 |
!= | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
示例:
int x = 5, y = 10;
cout << (x > y) << endl; // 0 (false)
cout << (x <= y) << endl; // 1 (true)
3. 逻辑运算符(Logical Operators)
用于布尔逻辑运算。
运算符 | 作用 |
---|---|
&& | 逻辑与(AND) |
` | |
! | 逻辑非(NOT) |
示例:
bool a = true, b = false;
cout << (a && b) << endl; // 0
cout << (a || b) << endl; // 1
cout << (!a) << endl; // 0
4. 赋值运算符(Assignment Operators)
用于给变量赋值。
运算符 | 作用 |
---|---|
= | 赋值 |
+= | 加法赋值 |
-= | 减法赋值 |
*= | 乘法赋值 |
/= | 除法赋值 |
%= | 取模赋值 |
示例:
int num = 10;
num += 5; // num = 15
num *= 2; // num = 30
cout << num << endl;
5. 位运算符(Bitwise Operators)
用于二进制位操作。
运算符 | 作用 |
---|---|
& | 按位与 |
` | ` |
^ | 按位异或 |
~ | 按位取反 |
<< | 左移 |
>> | 右移 |
示例:
int a = 5, b = 3; // 5: 101, 3: 011
cout << (a & b) << endl; // 1 (001)
cout << (a | b) << endl; // 7 (111)
cout << (a ^ b) << endl; // 6 (110)
cout << (~a) << endl; // -6(取反)
cout << (a << 1) << endl; // 10 (左移一位)
cout << (a >> 1) << endl; // 2 (右移一位)
6. 递增与递减运算符(Increment and Decrement Operators)
用于增加或减少变量值。
运算符 | 作用 |
---|---|
++ | 自增(前置 ++x ,后置 x++ ) |
-- | 自减(前置 --x ,后置 x-- ) |
示例:
int x = 5;
cout << x++ << endl; // 输出 5,先使用再增加
cout << ++x << endl; // 输出 7,先增加再使用
7. 三目运算符(Ternary Operator)
条件 ? 真值表达式 : 假值表达式
示例:
int a = 10, b = 20;
int min = (a < b) ? a : b;
cout << min << endl; // 10
8. 类型转换运算符(Type Conversion Operators)
用于类型转换。
运算符 | 作用 |
---|---|
(type) | C 风格转换 |
static_cast<type> | 静态转换 |
dynamic_cast<type> | 动态转换(用于指针) |
const_cast<type> | 去掉 const 限定 |
reinterpret_cast<type> | 重新解释转换(危险) |
示例:
double pi = 3.14;
int intPi = static_cast<int>(pi);
cout << intPi << endl; // 3
9. 逗号运算符(Comma Operator)
执行多个表达式,并返回最后一个表达式的值。
示例:
int a = (1, 2, 3); // a = 3
cout << a << endl;
10. 指针运算符(Pointer Operators)
用于指针操作。
运算符 | 作用 |
---|---|
* | 指针解引用 |
& | 取地址 |
示例:
int x = 10;
int *p = &x; // 取地址
cout << *p << endl; // 10(解引用)
11. 成员访问运算符(Member Access Operators)
用于访问类或结构体的成员。
运算符 | 作用 |
---|---|
. | 访问对象成员 |
-> | 访问指针对象的成员 |
示例:
struct Point {
int x, y;
};
Point p = {10, 20};
cout << p.x << endl; // 10
12. sizeof
运算符
返回数据类型或变量的字节大小。
示例:
cout << sizeof(int) << endl; // 4(取决于系统)
cout << sizeof(double) << endl; // 8
13. new
和 delete
运算符
用于动态内存分配。
示例:
int *p = new int(10);
cout << *p << endl;
delete p;