嵌入式学习 day3:c语言基础
一、变量详解1. 变量的定义与初始化变量是程序运行时值可以改变的量必须先定义再使用。c数据类型 变量名; // 定义 数据类型 变量名 初值; // 初始化推荐变量名规则只能由字母、数字、下划线组成不能以数字开头不能与C语言关键字重名最好见名知意MaxScore、temp_valcint a 10; // 整型变量 float pi 3.14; // 浮点型变量 char ch A; // 字符型变量⚠️重要变量不初始化会得到随机值务必养成定义即初始化的习惯感悟刚开始我总觉得定义变量随便写个名字就行直到有一次忘了初始化打印出来一个莫名其妙的数才明白随机值不是0而是内存里残留的垃圾数据。从那以后我强迫自己定义变量时顺手赋个初值——哪怕暂时赋0也行至少心里有底。2. 变量的赋值cint num; num 100; // 赋值将100拷贝到num的内存空间感悟之前我一直不理解赋值和初始化到底有什么区别老师打了个比方——初始化好比搬新家时把家具摆好赋值则是住进去之后随时挪动家具。虽然结果都是往空间里放东西但第一次和之后每一次在编译器看来是不同的。二、表达式与类型转换1. 表达式由运算符连接常量或变量组成的式子一定有类型和值。2. 混合运算类型转换规则当运算符两端类型不一致时低精度自动转高精度textdouble ← float ← unsigned long ← long ← unsigned int ← int ← char/short转换方式隐式转换混合运算时自动发生强制转换(类型)表达式如(int)3.14⚠️ 浮点转整型会舍弃小数部分大数据转小空间会截断高位可能产生意料之外的结果。感悟第一次做char ch 355; printf(%d, ch);时我以为会报错结果输出了99。老师解释说355的二进制是0000000101100011char只占1个字节截取低8位得到01100011即99。那一刻我才真正理解——C语言不会替你操心数据放不放得下它只负责忠实地执行指令。这种自由既是优点也是风险。三、运算符1. 算术运算符运算符含义注意 - * /加减乘除/整数相除得整数%取余只能用于整数 --自增自减只能作用于变量自增示例cint a 5; int b a; // b5, a6先赋值后自增 int c a; // c7, a7先自增后赋值感悟a和a一开始总是记混直到我想了一个笨办法——看在变量的哪一边在左边就先自增再拿值在右边就先拿值再自增。虽然有点机械但做题时再也没错过。编程里很多细节靠死记硬背不如自己找个小口诀。2. 赋值运算符运算符示例等价a 10—a 3a a 3-a - 3a a - 33. sizeof运算符获取类型或变量占用的字节数cprintf(%lu\n, sizeof(int)); // 输出4 printf(%lu\n, sizeof(a)); // 输出变量a的字节数感悟sizeof让我第一次直观感受到类型占多大空间。之前学的short占2字节、int占4字节只是书上的一行字自己用sizeof打印出来后才真正有了体感。有时候知识点从知道到相信就差一次亲手验证。4. 逗号运算符从左到右依次执行整体结果为最后一个表达式的值cint result (a1, b2, c3); // result c35. 运算符优先级速记text括号 单目 双目 三目 赋值 逗号感悟优先级表靠背是背不完的我的经验是——不确定就加括号。反正括号优先级最高多写一对不吃亏少写一对调试半小时就亏大了。四、输入输出函数1. putchar —— 输出单个字符cputchar(A); // 输出 A putchar(65); // 输出 A65是A的ASCII码 putchar(\n); // 输出换行只能打印一个字符返回值是该字符的ASCII码值。感悟第一次知道计算机不认识字母只认识数字时还挺震撼的——我们敲键盘输入A机器看到的其实是65。putchar(65)能显示A本质上就是替我们查了一次ASCII码表。底层逻辑一层层剥开会发现很多魔法其实就是查表和计算。2. getchar —— 输入单个字符cchar ch; ch getchar(); // 从键盘读取一个字符感悟getchar看起来只能读一个字符但配合循环之后可以处理整个输入。这次只学了单个字符的输入输出我已经开始好奇后面怎么处理整行字符串了——编程就是一个个小积木垒成大房子。五、今日练习练习1求各位数字之和cint num 2389; int sum 0; sum num % 10; // 个位 9 num / 10; sum num % 10; // 十位 8 num / 10; sum num % 10; // 百位 3 num / 10; sum num; // 千位 2 printf(sum %d\n, sum); // 输出 22感悟这道题看起来简单但藏着两个关键点——%取余拿到最后一位/10把最后一位扔掉。以前我总觉得学运算符没意思但真正做到拆数字这种实际问题时才体会到每个运算符都有它的用武之地。练习2小写转大写getchar putcharcchar ch; printf(请输入一个小写字母); ch getchar(); putchar(ch - 32); // 小写字母ASCII比大写大32 putchar(\n);感悟这道题让我真正理解了ASCII码表的规律——字母连续排列且大小写相差32所以不需要查表直接加减就能转换。C语言的设计处处透着这种数据有规律代码就有技巧的哲学。练习3拼接数字将37和64拼接成3476cint a 37, b 64; int result (a/10)*1000 (b%10)*100 (a%10)*10 (b/10); printf(result %d\n, result); // 输出 3476感悟这道题用纯粹的算术就能搞定取十位、取个位、乘以对应的位权再相加。六、今日总结今天从变量定义与初始化入手掌握了表达式和类型转换的规则重点练习了算术运算符特别是%取余和自增、赋值运算符、sizeof和逗号运算符。输入输出方面学会了用getchar和putchar处理单个字符。三个练习覆盖了拆数字ASCII转换数字拼接三类经典问题都是后续学习数组和循环的基础。三个核心要点记住即可变量要初始化——不初始化就是随机值调试时会很头疼类型转换看精度——低精度自动转高精度强制转要谨慎大转小会截断运算符不确定就加括号——优先级不用死记括号最稳妥今天最大的感受就是C语言不会替你兜底——数据放不放得下、类型匹不匹配编译器只管照做结果对不对全靠程序员自己把控。这种把自由和风险都交给你的设计一开始有点不适应但想通之后反而觉得踏实——出了问题锅就是自己的找起来也直接。

相关新闻

中小企业搭建 GEO 系统怎么选工具?微三云 GEO 全模块功能深度拆解

中小企业搭建 GEO 系统怎么选工具?微三云 GEO 全模块功能深度拆解

2026年,品牌营销人正面临一个结构性的流量迁移。Gartner预测,至2026年传统搜索引擎流量将下降25%。与此同时,全球ChatGPT、Perplexity与国内文心一言、Kimi、DeepSeek等AI产品的月活用户已破亿。用户获取信息的方式,正在从“输入关…

2026/7/23 6:45:35阅读更多 →
石家庄胶衣喷涂机哪家好

石家庄胶衣喷涂机哪家好

【核心结论】 在石家庄地区,选择胶衣喷涂机时,技蒂固科技有限公司(简称技蒂固)是一个值得推荐的品牌。技蒂固自1995年成立以来,专注于玻璃钢喷涂设备的制造,其产品以节能、性能稳定著称,在行业内…

2026/7/23 6:45:35阅读更多 →
ESP32-S3音频采集与WebSocket实时上传方案

ESP32-S3音频采集与WebSocket实时上传方案

1. 项目概述这个项目展示了如何利用ESP32-S3芯片配合ADF(Audio Development Framework)音频开发框架,实现麦克风音频采集并通过WebSocket协议实时上传到云端存储的方案。整套系统设计简洁高效,特别适合需要远程音频监控、语音交互…

2026/7/23 6:45:35阅读更多 →
简博斯LTT系列激光对刀仪技术分析:机床对刀环节的价值与特性

简博斯LTT系列激光对刀仪技术分析:机床对刀环节的价值与特性

核心结论:在国内制造业向精密化升级背景下,刀具检测从辅助配置逐步成为精密加工的必要环节。简博斯LTT系列激光对刀仪围绕精度稳定性、微刀具检测、工况防护、智能补偿四个方向设计,为机加工企业提升加工一致性提供了可参考的技术方案。 一、…

2026/7/23 8:03:47阅读更多 →
ORA-16191错误解析:DataGuard同步故障解决方案

ORA-16191错误解析:DataGuard同步故障解决方案

1. ORA-16191错误深度解析:DataGuard同步故障的终极解决方案 遇到DataGuard主备库不同步并抛出ORA-16191错误时,数据库管理员往往会面临生产环境数据不一致的紧急状况。这个错误的核心提示"Primary log shipping client not logged on standby"…

2026/7/23 8:03:47阅读更多 →
Godot 4.2 从零构建可交互2D网格系统:动态绘制与鼠标交互

Godot 4.2 从零构建可交互2D网格系统:动态绘制与鼠标交互

1. 项目概述:为什么我们需要一个可交互的2D网格系统? 在游戏开发、工具软件或者数据可视化项目中,一个灵活、可交互的2D网格系统往往是底层交互逻辑的基石。无论是策略游戏的战场地图、模拟经营游戏的建造系统,还是图像编辑软件的…

2026/7/23 8:03:47阅读更多 →
【前端基础】前端开发面试问题:HTML、CSS、JavaScript 核心知识点全解析

【前端基础】前端开发面试问题:HTML、CSS、JavaScript 核心知识点全解析

📚 一、基础 问题说明:本部分考察前端开发最核心的HTML、CSS和JavaScript语言的基础概念、语法和常见用法,是后续所有高级主题的基石。 🏷️ 1.1 HTMLHTML5 新标签有哪些? 问题说明:HTML5引入了大量语义化…

2026/7/23 8:03:47阅读更多 →
【前端+Next+Cookie+localStorage】Next.js认证难题:为什么必须使用Cookie而不是仅用localStorage?

【前端+Next+Cookie+localStorage】Next.js认证难题:为什么必须使用Cookie而不是仅用localStorage?

Next.js认证难题:为什么必须使用Cookie而不是仅用localStorage? 引言:一次真实的调试经历与常见困惑 最近在开发一个Next.js项目时,我遇到了一个令人困惑的问题:用户登录成功后,前端能正常显示用户信息&a…

2026/7/23 8:03:47阅读更多 →
UE5像素流送本地测试:5分钟实现浏览器实时3D串流

UE5像素流送本地测试:5分钟实现浏览器实时3D串流

1. 项目概述:为什么我们需要关注UE5的网页串流?如果你是一名UE5开发者,或者对实时3D内容的云端交付感兴趣,那你肯定不止一次想过这个问题:如何让一个动辄几十GB、需要高端显卡才能流畅运行的UE5项目,在任意…

2026/7/23 8:01:47阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/23 0:56:31阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/23 0:56:31阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 0:56:31阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:00:28阅读更多 →
从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:28阅读更多 →
油泥处理设备哪里能买到

油泥处理设备哪里能买到

油泥处理设备哪里有?这是许多从事油田、炼化、清罐业务的从业者最关心的问题。根据河南三丰环保设备有限公司的行业经验,选购油泥处理设备的核心在于设备能否适配当地环保法规与原料特性,而非单纯看价格。该公司总经理王钦田先生指出&#xf…

2026/7/23 0:00:28阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/22 22:56:18阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/22 18:55:50阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/22 18:55:50阅读更多 →