C++运算符

一、C++运算符分类及核心用法

C++运算符按功能可分为7大类,以下是每类的核心运算符、作用和示例:

1. 算术运算符(处理数值计算)

运算符 作用 示例 说明
+ 加法/正号 a + b / +5 数值相加,或表示正数
- 减法/负号 a - b / -5 数值相减,或表示负数
* 乘法 a * b 数值相乘
/ 除法 a / b 整数除法取整,浮点数正常除
% 取模(余数) a % b 仅适用于整数,结果为余数
++ 自增 a++ / ++a 后置先使用后+1,前置先+1后使用
-- 自减 a-- / --a 后置先使用后-1,前置先-1后使用

示例代码

#include <iostream>
using namespace std;

int main() {
    int a = 10, b = 3;
    cout << "a + b = " << a + b << endl;  // 输出13
    cout << "a / b = " << a / b << endl;  // 输出3(整数除法)
    cout << "a % b = " << a % b << endl;  // 输出1(余数)
    
    int c = 5;
    cout << c++ << endl;  // 输出5(后置自增,先输出再+1)
    cout << ++c << endl;  // 输出7(前置自增,先+1再输出)
    return 0;
}

2. 赋值运算符(给变量赋值)

基础赋值:=
复合赋值(算术+赋值):+=-=*=/=%=

示例

int a = 10;
a += 5;  // 等价于a = a + 5,结果a=15
a *= 2;  // 等价于a = a * 2,结果a=30

3. 比较运算符(判断条件,返回bool值)

运算符 作用 示例
== 等于 a == b
!= 不等于 a != b
> 大于 a > b
< 小于 a < b
>= 大于等于 a >= b
<= 小于等于 a <= b

注意=是赋值,==是判断相等,新手易混淆!

4. 逻辑运算符(组合条件判断)

运算符 作用 示例 短路特性
&& 逻辑与 a > 0 && b > 0 左为假则右不执行
` ` 逻辑或
! 逻辑非 !a 取反(真变假,假变真)

示例

int a = 0, b = 5;
if (a > 0 && ++b > 0) {}  // a>0为假,++b不执行,b仍为5
if (a > 0 || ++b > 0) {}  // a>0为假,执行++b,b变为6

5. 位运算符(操作二进制位,偏底层)

运算符 作用 示例
& 按位与 a & b
` ` 按位或
^ 按位异或 a ^ b
~ 按位取反 ~a
<< 左移(乘2) a << 1
>> 右移(除2) a >> 1

示例

int a = 6;  // 二进制:0110
int b = 3;  // 二进制:0011
cout << (a & b) << endl;  // 0010 → 输出2
cout << (a << 1) << endl; // 1100 → 输出12

6. 指针/引用运算符(核心特色)

运算符 作用 示例
& 取地址(变量→指针) int* p = &a
* 解引用(指针→变量) *p = 10
-> 指针访问成员 p->name
. 对象访问成员 obj.name

示例

#include <iostream>
#include <string>
using namespace std;

struct Person {
    string name = "Tom";
};

int main() {
    int a = 5;
    int* p = &a;  // &取a的地址,p指向a
    *p = 10;      // *解引用,修改a的值为10
    cout << a << endl;  // 输出10

    Person obj;
    Person* p_obj = &obj;
    cout << p_obj->name << endl;  // ->访问指针指向对象的成员,输出Tom
    cout << obj.name << endl;     // .访问对象成员,输出Tom
    return 0;
}

7. 其他常用运算符

  • sizeof:计算类型/变量的字节大小 → sizeof(int)(输出4)、sizeof(a)
  • ?::三目运算符(简化if-else)→ a > b ? a : b(a>b返回a,否则返回b)
  • ,:逗号运算符(从左到右执行,返回最后一个值)→ (a=5, b=10, a+b)(返回15)

二、运算符优先级(核心规则)

优先级决定运算执行顺序,新手记核心即可:

  1. 括号 () 优先级最高(优先算括号内);
  2. 单目运算符(!++--&*)> 算术运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符;
  3. 同优先级按结合性执行(如赋值运算符=是从右到左:a = b = 5 → 先b=5,再a=b)。

示例

// 先算*,再算+,最后算==
if (a + b * c == 10) {}  
// 加括号明确顺序,可读性更高(推荐)
if (a + (b * c) == 10) {}

总结

  1. C++运算符按功能可分为算术、赋值、比较、逻辑、位运算、指针/引用等7大类,其中指针/引用运算符是C++的核心特色;
  2. 优先级:括号 > 单目运算符 > 算术 > 比较 > 逻辑 > 赋值,不确定时加括号更清晰;
  3. 易错点:=(赋值)和==(相等)、++/--的前后置区别、逻辑运算符的短路特性。
posted @ 2026-01-23 15:14  C++大哥来也  阅读(23)  评论(0)    收藏  举报