一、基本介绍
运算符是描述对数据进行的运算(操作)、体现数据之间运算关系的符号,运算符也叫操作符。
二、运算符分类
-
算术运算符:用于执行基本的数学运算。
+(加)-(减)*(乘)/(除)%(取模,求余数)++(自增)--(自减)
-
关系运算符:用于比较两个值。
==(等于)!=(不等于)>(大于)<(小于)>=(大于等于)<=(小于等于)
-
逻辑运算符:用于布尔逻辑运算。
&&(逻辑与)||(逻辑或)!(逻辑非)
-
位运算符:对操作数的位进行操作。
&(位与)|(位或)^(位异或)~(位取反)<<(左移)>>(右移)
-
赋值运算符:用于赋值操作。
=(简单赋值)+=(加法赋值)-=(减法赋值)*=(乘法赋值)/=(除法赋值)%=(取模赋值)&=(位与赋值)|=(位或赋值)^=(位异或赋值)<<=(左移赋值)>>=(右移赋值)
-
其他运算符:
sizeof(获取变量或类型的大小)&(取地址)*(解引用)new和delete(动态内存分配和释放)this(当前对象的指针).和->(成员访问)?:(条件运算符,三元运算符),(逗号运算符)
-
特殊运算符:
::(作用域解析运算符)typeid(返回变量类型的信息)const_cast(去除 const 属性)dynamic_cast(运行时类型检查的向下转型)reinterpret_cast(低层次的重新解释转换)static_cast(用于基本的非多态类型转换)
三、运算符示例
算术运算符:
int a = 10;
int b = 5;
int sum = a + b; // 15
int difference = a - b; // 5
int product = a * b; // 50
int quotient = a / b; // 2
int remainder = a % b; // 0
关系运算符:
int x = 10;
int y = 20;
bool equal = (x == y); // false
bool notEqual = (x != y); // true
bool lessThan = (x < y); // true
bool greaterThan = (x > y); // false
bool lessThanOrEqual = (x <= y); // true
bool greaterThanOrEqual = (x >= y); // false
逻辑运算符:
bool isRaining = true;
bool isUmbrella = false;
bool shouldStayIndoor = isRaining && isUmbrella; // false
bool shouldTakeJacket = isRaining || isUmbrella; // true
bool notRaining = !isRaining; // false
位运算符:
int num1 = 12; // 1100
int num2 = 9; // 1001
int andResult = num1 & num2; // 1000 (8)
int orResult = num1 | num2; // 1101 (13)
int xorResult = num1 ^ num2; // 0101 (5)
int notNum1 = ~num1; // -13 (two's complement)
赋值运算符:
int value = 0;
value = 10; // 简单赋值
value += 5; // 加法赋值,value 现在是 15
value -= 3; // 减法赋值,value 现在是 12
value *= 4; // 乘法赋值,value 现在是 48
value /= 2; // 除法赋值,value 现在是 24
value %= 5; // 取模赋值,value 现在是 4
其他运算符:
int size = sizeof(int); // 获取 int 类型的大小
int *ptr = &value; // 取地址
int originalValue = *ptr; // 解引用
int array[5] = {1, 2, 3, 4, 5};
int firstElement = array[0]; // 访问数组的第一个元素
特殊运算符:
class MyClass {
public:void myMethod() {}
};MyClass obj;
void (MyClass::*mptr)() = &MyClass::myMethod; // 成员指针int main() {MyClass obj;(obj.*mptr)(); // 通过成员指针调用成员函数return 0;
}
