🧮 C运算符大全——编程世界的「数学工具包」

运算符就像程序员手中的魔法棒✨,能进行各种计算和判断。下面用最有趣的方式拆解所有运算符!


一、算术运算符——基础计算器 🧮

作用:处理数字的加减乘除

运算符 描述 例子 生活类比
+ 加法 3 + 5 → 8 苹果🍎 + 香蕉🍌 = 总水果数
- 减法 10 - 4 → 6 钱包💰减掉支出 = 剩余金额
* 乘法 2 * 3 → 6 每人2块🍕,3人共需6块
/ 除法 10 / 3 → 3 10块糖分3人,每人3块(整数除)
% 取余 10 % 3 → 1 10块糖分3人,剩下1块🍬
++ 自增1 a++ vs ++a 先吃蛋糕🎂 vs 先加奶油再吃
-- 自减1 b-- vs --b 先喝奶茶🧋 vs 先减糖再喝

示例代码

1
2
3
4
int 苹果 = 5;
苹果++; // 苹果变成6(相当于 苹果 = 苹果 + 1)
int 奶茶 = 10;
int 余量 = 奶茶--; // 余量=10,奶茶变成9

二、关系运算符——比大小专家 ⚖️

作用:比较两个值的关系,返回真(1)或假(0)

运算符 描述 例子 生活类比
== 等于 5 == 3 → 0 检查密码是否正确🗝️
!= 不等于 5 != 3 → 1 判断奶茶口味是否不同🧋
> 大于 5 > 3 → 1 比较考试成绩📊
< 小于 5 < 3 → 0 判断年龄是否符合条件👶→👨
>= 大于等于 5 >= 5 → 1 身高是否达标📏
<= 小于等于 5 <= 3 → 0 体重是否超标⚖️

示例代码

1
2
3
4
5
6
int 温度 = 25;
if (温度 >= 30) {
printf("开空调❄️");
} else {
printf("吹风扇💨");
}

三、逻辑运算符——真假判官 🕵️♂️

作用:组合多个条件判断

运算符 描述 例子 生活类比
&& 逻辑与 (A && B) 双人合作任务👫→都同意才执行
` ` 逻辑或
! 逻辑非 !A 取反操作🔄→真变假,假变真

短路特性

1
2
3
4
int a = 0;
if (a != 0 && 10/a > 1) {
// 不会崩溃!因为a!=0为假,后面不执行
}

四、位运算符——二进制操控师 🔧

作用:直接操作二进制位

运算符 描述 例子(A=60=0011 1100)
& 按位与 A & 13 → 12 (0000 1100)
` ` 按位或
^ 按位异或 A ^ 13 → 49 (0011 0001)
~ 按位取反 ~A → -61 (1100 0011)
<< 左移 A << 2 → 240 (1111 0000)
>> 右移 A >> 2 → 15 (0000 1111)

生活场景

  • 权限控制:用位掩码管理用户权限🔐
  • 加密算法:异或操作用于简单加密🔒

五、赋值运算符——快捷存钱罐 🐖

作用:简化变量赋值操作

运算符 例子 等价写法 生活类比
= a = 5 a = 5 存钱罐放入5元💰
+= a += 3 a = a + 3 往存钱罐加3元
-= a -= 2 a = a - 2 取出2元
*= a *= 4 a = a * 4 钱翻4倍
/= a /= 2 a = a / 2 钱平分两份
%= a %= 3 a = a % 3 分钱后剩下的零钱

示例代码

1
2
3
int 钱包 = 100;
钱包 += 50; // 钱包 = 150
钱包 /= 2; // 钱包 = 75

六、杂项运算符——多功能瑞士军刀 🔪

运算符 描述 例子 作用
sizeof() 获取变量/类型大小 sizeof(int) → 4 查看数据占内存多少字节💾
& 获取变量地址 &a → 0x7ffe... 找到变量在内存中的门牌号🏠
* 指针运算符 *ptr → 访问指针指向的值 用地址打开对应的储物柜🗄️
?: 三元条件运算符 a > b ? a : b 快速二选一(像自动售货机🤖)

三元运算符示例

1
int 最大温度 = (今天温度 > 昨天温度) ? 今天 : 昨天;

七、运算符优先级——计算顺序交通灯 🚥

口诀

括号成员是老大;
单目运算排老二;
乘除余三加减四;
移位五来关系六;
等与不等排第七;
位与异或位或八九十;
逻辑或和与;
条件赋值逗号垫底。

优先级表速记

  1. () → 最优先
  2. ! ++ -- &(单目)
  3. * / %
  4. + -
  5. << >>
  6. > < >= <=
  7. == !=
  8. && → 逻辑与
  9. || → 逻辑或
  10. = += 等赋值操作

示例

1
2
int result = 5 + 3 * 2; // 先乘后加 → 11
int result2 = (5 + 3) * 2; // 先加后乘 → 16

🚧 避坑指南

  1. 自增/自减陷阱

    1
    2
    int a = 5;
    int b = a++ + ++a; // ❌ 结果不确定!避免同一变量多次自增
  2. 浮点比较误差

    1
    2
    float x = 0.1 + 0.2;
    if (x == 0.3) { /* 可能不成立!应用范围判断 */ }
  3. 逻辑与/或短路

    1
    2
    int *ptr = NULL;
    if (ptr != NULL && *ptr > 0) { /* 安全访问 */ }

🌟 实战练习

题目:用三元运算符判断成绩是否及格

1
2
3
int 分数 = 75;
char 结果 = (分数 >= 60) ? '✅' : '❌';
printf("%c", 结果); // 输出✅

题目:位运算实现权限控制

1
2
3
4
5
6
7
8
#define 读权限 0b001
#define 写权限 0b010
#define 执行权限 0b100

int 用户权限 = 读权限 | 写权限; // 0b011
if (用户权限 & 写权限) {
printf("可编辑📝");
}

掌握这些运算符,你就能像操控魔法一样编写程序啦!🎮 遇到问题随时复习这张”运算符地图”🗺️