【轻松学C:编程小白的大冒险】— 09 运算符与表达式的实际应用

在这里插入图片描述

  • 在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。
  • 而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。


一、🌟 运算符家族大阅兵

  • 今天我们要解锁C语言的全部34个运算符!每个运算符都是身怀绝技的江湖高手,让我们逐个揭开它们的神秘面纱。
  • 运算符家族大阅兵 表格
分类运算符符号描述示例代码优先级
算术运算符+ - * / %加减乘除取余5 + 3 * 2 → 114-3
赋值运算符= += -= *= /= %=基本及复合赋值coins += 5 → coins=152
关系运算符> < == != >= <=比较大小关系5 > 3 → 16-7
逻辑运算符&& ` !`逻辑与/或/非
位运算符& ` ^` `~` `<<` `>>`二进制位操作0b1010 & 0b0101 → 0b0000
其他运算符() [] . ->括号/数组/结构体成员访问arr[0] ptr->value1
++ --自增自减i++ → i=i+12
sizeof计算数据类型大小sizeof(int) → 42
? :三目条件运算符a>b ? a : b13
,逗号运算符int x=(5,6,7) → x=714
& *取地址/间接访问int *p=&x; *p=52
(类型)强制类型转换(float)total / quantity2

二、🧮 算术运算符:数学界的五虎上将

1. 加法运算符 +

  • 特点:最友好的运算符,支持数字相加和字符串拼接(但C语言不支持)
  • 示例代码
int apples = 3, oranges = 5;
printf("水果总数:%d", apples + oranges); // 8
  • 使用场景:购物车金额计算、步数统计等
  • 示例图
苹果数量
加法运算符 +
橙子数量
水果总数

2. 减法运算符 -

  • 特点:可以计算年龄差、温度变化等
  • 示例代码
int birthYear = 2000, currentYear = 2025;
printf("年龄:%d", currentYear - birthYear); // 25
  • 使用场景:时间差计算、库存管理等
  • 示例图
当前年份
减法运算符 -
出生年份
年龄

3. 乘法运算符 *

  • 特点:几何计算必备,支持快速翻倍
  • 示例代码
float radius = 3.5;
printf("圆面积:%.2f", 3.14 * radius * radius); // 38.47
  • 使用场景:图形渲染、投资收益计算等
  • 示例图
圆周率 3.14
乘法运算符 *
半径
半径 * 3.14
乘法运算符 *
圆面积

4. 除法运算符 /

  • 特点:整数相除会自动"砍尾",浮点相除需注意精度
  • 示例代码
int slices = 7, people = 3;
printf("每人分到:%d片", slices / people); // 2
  • 使用场景:资源分配、数据平均等
  • 示例图
切片数量
除法运算符 /
人数
每人分到的切片数

5. 取模运算符 %

  • 特点:返回余数,可用于判断奇偶性
  • 示例代码
int number = 13;
printf("%s", number % 2 ? "奇数" : "偶数"); // 奇数
  • 使用场景:周期性任务调度、验证码生成等
  • 示例图
数字
取模运算符 %
2
余数是否为 0?
偶数
奇数

二、📜 赋值运算符:数据管道工程师

1、基本赋值 =

  • 特点:把右边的值"倒入"左边变量
  • 示例代码
int score = 90; // 把90赋值给score
  • 示例图
值 90
赋值运算符 =
变量 score

2、复合加法赋值 +=

  • 特点:懒人必备快捷方式,等价于 变量 = 变量 + 值
  • 示例代码
int coins = 10;
coins += 5; // 等价于 coins = coins + 5 → 15
  • 示例图
初始变量 coins
执行 += 5
读取数值: 5
读取 coins 的值: 10
计算 10 + 5 = 15
更新 coins 的值
最终 coins 的值: 15
等价表达式
coins = coins + 5

3、复合减法赋值 -=

  • 特点:懒人必备快捷方式,等价于 变量 = 变量 - 值
  • 示例代码
int balance = 100;
balance -= 30; // 等价于 balance = balance - 30 → 70
  • 示例图
初始变量 balance
执行 -= 30
读取数值: 30
读取 balance 的值: 100
计算 100 - 30 = 70
更新 balance 的值
最终 balance 的值: 70
等价表达式
balance = balance - 30

4、复合乘法赋值 *=

  • 特点:懒人必备快捷方式,等价于 变量 = 变量 * 值
  • 示例代码
int speed = 5;
speed *= 2; // 等价于 speed = speed * 2 → 10
  • 示例图
初始变量 speed
执行 *= 2
读取数值: 2
读取 speed 的值: 5
计算 5 * 2 = 10
更新 speed 的值
最终 speed 的值: 10
等价表达式
speed = speed * 2

5、复合除法赋值 /=

  • 特点:懒人必备快捷方式,等价于 变量 = 变量 / 值
  • 示例代码
int slices = 12;
slices /= 3; // 等价于 slices = slices / 3 → 4
  • 示例图
初始变量 slices
执行 /= 3
读取数值: 3
读取 slices 的值: 12
计算 12 / 3 = 4
更新 slices 的值
最终 slices 的值: 4
等价表达式
slices = slices / 3

6、复合取模赋值 %=

  • 特点:懒人必备快捷方式,等价于 变量 = 变量 % 值
  • 示例代码
int remainder = 10;
remainder %= 3; // 等价于 remainder = remainder % 3 → 1
  • 示例图
初始变量 remainder
执行 %= 3
读取数值: 3
读取 remainder 的值: 10
计算 10 % 3 = 1
更新 remainder 的值
最终 remainder 的值: 1
等价表达式
remainder = remainder % 3

三、 👀 关系运算符:代码裁判组

运算符含义示例
>大于5 > 3 → 1
<小于2 < 4 → 1
==等于3 == 3 → 1
!=不等于5 != 6 → 1
>=大于等于5 >= 5 → 1
<=小于等于4 <= 3 → 0
  • 使用场景:常用于条件判断(如 if 语句)、循环控制(如 for 循环)以及逻辑表达式组合。
  • 示例代码
#include <stdio.h>

int main() {
    int a = 5, b = 3;

    // 大于
    printf("5 > 3 → %d\n", a > b);   // 输出: 1

    // 小于等于
    printf("3 <= 5 → %d\n", 3 <= 5); // 输出: 1

    // 不等于
    printf("a != b → %d\n", a != b); // 输出: 1

    return 0;
}
  • 示例图
值 1
关系运算符
值 2
执行判断
返回 1
返回 0
规则说明
比较两个值的大小或相等性

四、🧠 逻辑运算符:代码的智能大脑

1、逻辑与 &&

  • 特点:两个条件都为真才返回真
  • 示例代码
#include <stdio.h>

int main() {
    int age = 20;
    int score = 70;

    if (age >= 18 && score > 60) {
        printf("合格");
    } else {
        printf("不合格");
    }

    return 0;
}
  • 示例图
年龄 >= 18?
逻辑与运算符 &&
分数 > 60?
判断结果
输出: 合格
输出: 不合格
逻辑与规则
两个条件都为真才返回真

2、 逻辑或 ||

  • 特点:只要一个条件为真就返回真
  • 示例代码
#include <stdio.h>

int main() {
    int isVIP = 1;
    int points = 800;

    if (isVIP || points > 1000) {
        printf("可兑换");
    } else {
        printf("不可兑换");
    }

    return 0;
}
  • 示例图
是否为 VIP?
逻辑或
积分 > 1000?
判断结果
输出: 可兑换
输出: 不可兑换
逻辑或规则
只要一个条件为真就返回真

3、逻辑非 !

  • 特点:反转布尔值
  • 示例代码
#include <stdbool.h>
#include <stdio.h>

// 模拟显示登录页面的函数
void showLoginPage() {
    printf("显示登录页面\n");
}

int main() {
    bool isLoggedIn = false;
    if (!isLoggedIn) {
        showLoginPage();
    }
    return 0;
}
  • 示例图
是否已登录?
逻辑非运算符 !
反转后的状态
输出: 显示登录页面
输出: 不显示登录页面
逻辑非规则
反转布尔值

五、💻 位运算符:二进制世界的黑客

1、按位与 &

  • 特点:只有对应位都为1才保留1
  • 示例代码
#include <stdio.h>

int main() {
    unsigned char flag = 0b1010;
    flag &= 0b0101;
    printf("按位与运算结果: 0b%04b\n", flag);
    return 0;
}
  • 示例图
二进制数 0b1010
按位与运算符 &
二进制数 0b0101
运算结果
输出: 0b0000
按位与规则
只有对应位都为 1 才保留 1

2、按位或 |

  • 特点:对应位有 1 就保留 1
  • 示例代码
#include <stdio.h>

int main() {
    unsigned char led = 0b0000;
    led |= 0b0001;
    printf("按位或运算后 led 的值: 0b%04b\n", led);
    return 0;
}
  • 示例图
结果
二进制数 0b0000
按位或
二进制数 0b0001
运算结果
输出: 0b0001
按位或规则
对应位有 1 就保留 1

3、按位异或 ^

  • 特点:对应位不同才保留 1
  • 示例代码
#include <stdio.h>

int main() {
    unsigned char num1 = 0b1010;
    unsigned char num2 = 0b0101;
    unsigned char result = num1 ^ num2;
    printf("按位异或运算结果: 0b%04b\n", result);
    return 0;
}
  • 示例图
结果
二进制数 0b1010
按位异或运算符 ^
二进制数 0b0101
运算结果
输出: 0b1111
按位异或规则
对应位不同才保留 1

4、按位取反 ~

  • 特点:翻转所有二进制位
  • 示例代码
#include <stdio.h>

int main() {
    unsigned char data = 0b1100;
    unsigned char result = ~data;
    printf("按位取反运算结果: 0b%04b\n", result);
    return 0;
}
  • 示例图
结果
二进制数 0b1100
按位取反
运算结果
输出: 0b0011
按位取反规则
翻转所有二进制位

5、左移 <<

  • 特点:每左移一位相当于乘以 2
  • 示例代码
#include <stdio.h>

int main() {
    int speed = 5;
    speed <<= 1;
    printf("左移运算后 speed 的值: %d\n", speed);
    return 0;
}
  • 示例图
结果
值 5
左移运算符 <<
移动位数 1
运算结果
输出: 10
左移规则
每左移一位相当于乘以 2

6、右移 >>

  • 特点:每右移一位相当于除以 2
  • 示例代码
#include <stdio.h>

int main() {
    int population = 100;
    population >>= 2;
    printf("右移运算后 population 的值: %d\n", population);
    return 0;
}
  • 示例图
结果
值 100
右移运算符 >>
移动位数 2
运算结果
输出: 25
右移规则
每右移一位相当于除以 2

六、 📊 运算符优先级:代码交通规则

高优先级
括号/下标
单目运算符
乘除取模
加减
移位
关系
相等
位与
位异或
位或
逻辑与
逻辑或
三目
赋值
逗号

七、 💡 小课堂:运算符的隐藏技能

  1. 逗号运算符int x = (5, 6, 7); 结果x=7
值 5
逗号运算符
值 6
值 7
最终值 7
赋值给变量 x
  1. 三目运算符max = (a > b) ? a : b;
值 a
比较 a > b
值 b
将 a 赋值给 max
将 b 赋值给 max
  1. 强制类型转换float price = (float)total / quantity;
变量 total
强制类型转换为 float
除法运算符 /
变量 quantity
结果赋值给 price

八、😂 编程冷笑话

程序员的老婆让他去买酱油:

  • “记得买酱油,如果看到西瓜就买一个!”
  • 程序员回家时只带了一个西瓜。
  • 老婆:“为什么不买酱油?”
  • 程序员:“因为我看到了西瓜!”

九、✨ 今日金句

“运算符是代码的标点符号,用好了能写出优美的诗,用错了就是乱码的诅咒!”

内容概要:本文详细介绍了2023-2024年度中国智能制造产业发展情况。报告由多个部门和机构联合编写,涵盖智能制造总述、AI赋能制造业转型升级、全球智能制造发展形势、中国智能制造概况、产业分析、发展规划及优秀案例。报告指出,智能制造已成为提升制造业竞争力的国家战略,强调了新一代信息技术制造业深度融合的重要性。文中分析了中国智能制造的优势、面临的挑战及未来的发展目标,强调了政策引领、试点先行和跨域协同的重要性。同时,报告探讨了AI在智能制造中的应用,特别是大模型对制造业的推动作用,并列举了多个行业和地区的智能制造政策和具体案例,展示了智能制造在中国的广泛应用和未来发展潜力。 适用人群:政府相关部门、智能制造领域的研究人员、企业高管和技术人员、高等院校相关专业的师生等。 使用场景及目标:①帮助政府和企业了解智能制造的最新发展动态和政策导向;②为制造业企业提供智能化转型的参考案例和技术解决方案;③为高校和研究机构提供智能制造领域的研究素材和方向;④促进智能制造技术的普及和应用,推动制造业高质量发展。 阅读建议:此报告内容详尽,涵盖了智能制造的多个方面,读者应重点关注中国智能制造的优势、面临的挑战、发展目标及相关政策。同时,结合实际工作或研究需求,深入研读具体章节和案例,以获得更有针对性的知识和启示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

秋知叶i

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

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

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

打赏作者

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

抵扣说明:

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

余额充值