C++运算符的使用

运算符分类

C++运算符可分为以下几类:

  • 算术运算符
  • 关系运算符
  • 逻辑运算符
  • 位运算符
  • 赋值运算符
  • 其他运算符

算术运算符

用于执行基本数学运算:

  • 加法:a + b
  • 减法:a - b
  • 乘法:a * b / 除法:a / b % 取模:a % b ++ 自增:a++++a -- 自减:a----a

示例:

int x = 10, y = 3;
cout << x + y;  // 输出13
cout << x % y;  // 输出1

关系运算符

用于比较两个值: == 等于:a == b != 不等于:a != b

大于:a > b < 小于:a < b = 大于等于:a >= b <= 小于等于:a <= b

示例:

int a = 5, b = 3;
bool result = a > b;  // result为true

逻辑运算符

用于组合条件: && 逻辑与:a && b || 逻辑或:a || b ! 逻辑非:!a

示例:

bool x = true, y = false;
cout << (x && y);  // 输出0

位运算符

对二进制位进行操作: & 按位与:a & b | 按位或:a | b ^ 按位异或:a ^ b ~ 按位取反:~a << 左移:a << b

右移:a >> b

示例:

int a = 5, b = 3;
cout << (a & b);  // 输出1

赋值运算符

用于赋值操作: = 简单赋值:a = b += 加等于:a += b -= 减等于:a -= b *= 乘等于:a *= b /= 除等于:a /= b %= 模等于:a %= b <<= 左移等于:a <<= b

= 右移等于:a >>= b &= 按位与等于:a &= b |= 按位或等于:a |= b ^= 按位异或等于:a ^= b

示例:

int x = 10;
x += 5;  // x变为15

其他运算符

?: 条件运算符:condition ? x : y , 逗号运算符:a, b sizeof 大小运算符:sizeof(a) & 地址运算符:&a

  • 指针运算符:*a . 成员选择:object.member -> 指针成员选择:pointer->member :: 作用域解析:Class::member

示例:

int a = 5, b = 10;
int max = (a > b) ? a : b;  // max为10

运算符优先级

运算符按特定顺序求值:

  1. :: 作用域解析
  2. () [] -> . ++ -- 后缀
  3. ++ -- 前缀 + - 一元 ! ~ * 解引用 & 取地址 sizeof new delete
  4. .* ->* 成员指针
  5. * / % 乘除
  6. + - 加减
  7. << >> 位移
  8. < <= > >= 关系
  9. == != 相等
  10. & 按位与
  11. ^ 按位异或
  12. | 按位或
  13. && 逻辑与
  14. || 逻辑或
  15. ?: 条件
  16. = += -= 等赋值
  17. , 逗号

类型转换运算符

C++提供多种类型转换方式:

  • static_cast<type>(expression) 静态类型转换
  • dynamic_cast<type>(expression) 动态类型转换
  • const_cast<type>(expression) 常量性转换
  • reinterpret_cast<type>(expression) 重新解释转换

示例:

double d = 3.14;
int i = static_cast<int>(d);  // i为3

重载运算符

C++允许重载大多数运算符:

class Vector {
public:
    Vector operator+(const Vector& other) {
        Vector result;
        result.x = x + other.x;
        result.y = y + other.y;
        return result;
    }
private:
    int x, y;
};

注意事项

  • 避免运算符重载改变运算符的原始语义
  • 注意运算符的优先级和结合性
  • 某些运算符不能重载(如:: . .* ?:
  • 自增自减运算符的前缀和后缀形式有不同重载方式

运算符总览以及优先级

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨染千千秋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值