C++运算符重点知识
·
C++运算符分类
C++运算符可分为以下几类:
- 算术运算符
- 关系运算符
- 逻辑运算符
- 位运算符
- 赋值运算符
- 其他运算符
算术运算符
包括加减乘除等基本运算:
int a = 10 + 5; // 加
int b = 10 - 5; // 减
int c = 10 * 5; // 乘
int d = 10 / 5; // 除
int e = 10 % 3; // 取模
自增自减运算符:
int x = 5;
x++; // 后置自增
++x; // 前置自增
x--; // 后置自减
--x; // 前置自减
关系运算符
用于比较操作:
bool b1 = (10 == 5); // 等于
bool b2 = (10 != 5); // 不等于
bool b3 = (10 > 5); // 大于
bool b4 = (10 < 5); // 小于
bool b5 = (10 >= 5); // 大于等于
bool b6 = (10 <= 5); // 小于等于
逻辑运算符
用于布尔逻辑运算:
bool b7 = true && false; // 逻辑与
bool b8 = true || false; // 逻辑或
bool b9 = !true; // 逻辑非
位运算符
对整数进行位级操作:
unsigned int a = 5 & 3; // 位与
unsigned int b = 5 | 3; // 位或
unsigned int c = 5 ^ 3; // 位异或
unsigned int d = ~5; // 位取反
unsigned int e = 5 << 1; // 左移
unsigned int f = 5 >> 1; // 右移
赋值运算符
基本赋值和复合赋值:
int x = 10; // 基本赋值
x += 5; // 等价于x = x + 5
x -= 3; // 等价于x = x - 3
x *= 2; // 等价于x = x * 2
x /= 4; // 等价于x = x / 4
x %= 3; // 等价于x = x % 3
其他重要运算符
条件运算符(三元运算符):
int max = (a > b) ? a : b;
逗号运算符:
int x = (a = 5, b = 10, a + b); // x = 15
sizeof运算符:
size_t s = sizeof(int); // 获取类型或对象的大小
成员访问运算符:
obj.member; // 对象成员访问
ptr->member; // 指针成员访问
类型转换运算符:
double d = static_cast<double>(5); // 静态类型转换
运算符优先级
C++运算符有严格的优先级规则,高优先级运算符先计算。常见优先级从高到低:
- 作用域解析(::)
- 成员访问(., ->)
- 后缀自增/减(++, --)
- 逻辑非(!), 位取反(~), 正负号(+, -)
- 乘法(*), 除法(/), 取模(%)
- 加法(+), 减法(-)
- 移位(<<, >>)
- 关系运算符(<, <=, >, >=)
- 相等性(==, !=)
- 位与(&)
- 位异或(^)
- 位或(|)
- 逻辑与(&&)
- 逻辑或(||)
- 条件运算符(?:)
- 赋值运算符(=, +=, -=等)
- 逗号运算符(,)
运算符重载
C++允许自定义运算符行为:
class Vector {
public:
Vector operator+(const Vector& other) {
Vector result;
result.x = x + other.x;
result.y = y + other.y;
return result;
}
};
注意事项
- 避免运算符优先级混淆,必要时使用括号明确运算顺序
- 注意整数除法的截断问题
- 自增自减运算符的前后置区别
- 避免未定义行为,如除零或移位负数
- 谨慎使用类型转换,可能丢失精度
更多推荐


所有评论(0)