1. 算术运算符
- 加法运算符( + ):用于两个数相int num1 = 5;
int num2 = 3;
int sum = num1 + num2; // sum 的值为 8
- 减法运算符( - ):用于两个数相减。
int difference = num1 - num2; // difference 的值为 2
- 乘法运算符( * ):用于两个数相乘。
int product = num1 * num2; // product 的值为 15
- 除法运算符( / ):两个数相除,如果是整数相除,结果为整数部分。
int quotient = num1 / num2; // quotient 的值为 1
double result = static_cast
- 取模运算符( % ):用于获取两个整数相除的余数。
int remainder = num1 % num2; // remainder 的值为 2
- 一元加运算符( + ):对操作数不产生实际影响,只是为了与一元减运算符对称。
int num = 5;
int result1 = +num; // result1 的值仍为 5
- 一元减运算符( - ):对操作数取负。
int num = 5;
int result2 = -num; // result2 的值为 -5
2. 赋值运算符
- 简单赋值( = ):将右边的值赋给左边的变量。
int a;
a = 10;
- 复合赋值运算符( += 、 -= 、 *= 、 /= 、 %= 等):先进行算术运算,再赋值。
int b = 5;
b += 3; // 相当于 b = b + 3,b 的值变为 8
- 位运算复合赋值( &= 、 |= 、 ^= 、 ~= 、 <<=>>= ):先进行位运算,再赋值。
int c = 5; // 5 的二进制为 00000101
c &= 3; // 3 的二进制为 00000011,c 变为 1(00000001)
3. 比较运算符
- 等于( == ):判断两个值是否相等,返回 bool 类型。
bool isEqual = (num1 == num2); // isEqual 的值为 false
- 不等于( != ):判断两个值是否不相等。
bool isNotEqual = (num1!= num2); // isNotEqual 的值为 true
- 大于( > ):判断左边的值是否大于右边的值。
bool isGreater = (num1 > num2); // isGreater 的值为 true
- 小于( < ):判断左边的值是否小于右边的值。
bool isLess = (num1 < num2); // isLess 的值为 false
- 大于等于( >= ):判断左边的值是否大于或等于右边的值。
bool isGreaterOrEqual = (num1 >= num2); // isGreaterOrEqual 的值为 true
- 小于等于( <= ):判断左边的值是否小于或等于右边的值。
bool isLessOrEqual = (num1 <= num2); // isLessOrEqual 的值为 false
4. 逻辑运算符
- 逻辑与( && ):两个条件都为 true 时,结果才为 true 。
bool condition1 = (num1 > 0);
bool condition2 = (num2 < 10);
bool resultAnd = condition1 && condition2; // resultAnd 的值为 true
- 逻辑或( || ):只要两个条件中有一个为 true ,结果就为 true 。
bool condition3 = (num1 < 0);
bool resultOr = condition3 || condition2; // resultOr 的值为 true
- 逻辑非( ! ):对条件取反。
bool resultNot =!condition1; // resultNot 的值为 false
5. 位运算符
- 按位与( & ):对两个数的二进制位进行与操作。
Int bitwiseAnd = num1 & num2; // 5 的二进制是 101,3 的二进制是 011,结果为 001,即 1
- 按位或( | ):对两个数的二进制位进行或操作。
int bitwiseOr = num1 | num2; // 结果为 111,即 7
- 按位异或( ^ ):对两个数的二进制位进行异或操作(相同为 0,不同为 1)。
int bitwiseXor = num1 ^ num2; // 结果为 110,即 6
- 按位取反( ~ ):对一个数的二进制位进行取反操作。
int bitwiseNot = ~num1; // 5 的二进制是 00000101,取反后为 11111010,在有符号整数中表示 -6
- 左移( << ):将一个数的二进制位向左移动指定的位数,右边补 0。
int leftShift = num1 << 1; // 5 左移 1 位,变为 1010,即 10
- 右移( >> ):将一个数的二进制位向右移动指定的位数,对于有符号整数,左边补符号位;对于无符号整数,左边补 0。
int rightShift = num1 >> 1; // 5 右移 1 位,变为 00000010,即 2
6. 自增自减运算符
- 前置自增( ++var ):先将变量的值加 1,然后使用新的值。
int c = 5;
int d = ++c; // c 变为 6,d 的值也为 6
- 后置自增( var++ ):先使用变量原来的值,然后将变量的值加 1。
int e = 5;
int f = e++; // f 的值为 5,e 变为 6
- 前置自减( --var ):先将变量的值减 1,然后使用新的值。
int g = 5;
int h = --g; // g 变为 4,h 的值也为 4
- 后置自减( var-- ):先使用变量原来的值,然后将变量的值减 1。
int i = 5;
int j = i--; // j 的值为 5,i 变为 4
7. 条件运算符( ? : )
- 是一个三元运算符,根据条件的真假返回不同的值。
int max = (num1 > num2)? num1 : num2; // max 的值为 5
8. 逗号运算符( , )
- 用于将多个表达式连接起来,从左到右依次计算每个表达式的值,并返回最后一个表达式的值。
int k = (1 + 2, 3 + 4); // k 的值为 7
9. 成员访问运算符( . 和 -> )
- . :用于访问结构体或类的成员变量和成员函数,当对象是结构体或类的实例时使用。
struct Point {
int x;
int y;
};
Point p = {10, 20};
int xValue = p.x;
- -> :当对象是指向结构体或类的指针时,使用 -> 来访问成员变量和成员函数。
Point* ptr = &p;
int yValue = ptr->y;
10. 指针运算符( * 和 & )
- * :指针解引用运算符,用于获取指针所指向变量的值。
int num3 = 10;
int* ptr1 = &num3;
int value = *ptr1; // value 的值为 10
- & :取地址运算符,用于获取变量的内存地址。
int* ptr2 = &num3; // ptr2存储 num3 的地址
11. sizeof 运算符
- 用于获取数据类型或变量所占用的字节数。
int sizeOfInt = sizeof(int); // 获取 int 类型占用的字节数
int num4 = 10;
int sizeOfVar = sizeof(num4); // 获取 num4 变量占用的字节数
12. 类型转换运算符
- static_cast :用于进行较为“安全”的类型转换,如基本数据类型之间的转换,以及指针类型的转换(前提是类型相关)。
double d = 3.14;
int i = static_cast
- dynamic_cast :主要用于在继承体系中进行安全的向下转型(从基类指针或引用转换为派生类指针或引用),并且在运行时检查转换是否有效。仅适用于含有虚函数的类层次结构。
class Base { virtual void f() {} };
class Derived : public Base {};
Base* basePtr = new Derived();
Derived* derivedPtr = dynamic_cast
if (derivedPtr) {
// 转换成功
}
- const_cast :用于去除或添加指针或引用的 const 或 volatile 属性。
const int num5 = 10;
int* ptr3 = const_cast
// 注意:通过 ptr3 修改 num5 是未定义行为,但这里展示 const_cast 的用法
- reinterpret_cast :用于进行危险的、底层的类型转换,如将指针转换为整数类型或不同类型指针之间的转换,这种转换不进行任何类型检查。
int num6 = 10;
int* ptr4 = &num6;
char* charPtr = reinterpret_cast
13. 函数调用运算符( () )
- 用于调用函数,并在括号内传递参数。
int add(int a, int b) {
return a + b;
}
int result3 = add(3, 5); // result3 的值为 8
14. 下标运算符( [] )
- 用于访问数组元素或具有类似数组访问语义的对象(如 std::vector )。
int arr[5] = {1, 2, 3, 4, 5};
int element = arr[2]; // element 的值为 3
15. new 和 delete 运算符
- new :用于在堆上分配内存,并返回指向分配内存起始地址的指针。
int* dynamicInt = new int;
*dynamicInt = 10;
- delete :用于释放由 new 分配的内存。
delete dynamicInt;
对于数组,使用 new[] 和 delete[] 。
int* dynamicArray = new int[5];
delete[] dynamicArray;
16. 作用域解析运算符( :: )
- 用于访问全局变量(当局部变量与全局变量同名时),或访问类的静态成员。
int globalVar = 10;
void func() {
int globalVar = 20;
int globalValue = ::globalVar; // 获取全局的 globalVar
}
class MyClass {
public:
static int staticVar;
};
int MyClass::staticVar = 5;
希望以上能对你有所帮助,大家一起进步![烟花][烟花][烟花]