【硬核C语言】do…while必执行一次!4个实战妙用新手很少知
很多新手只记住一句话do…while 不管条件真假先执行1次循环体再判断条件但90%的人只背语法完全不知道这个特性在实战里到底用来干嘛。今天不讲废话只讲单机开发、底层程序、C语言实战中真正能用的妙用附带可直接运行的代码。一、先简单回顾底层逻辑do { // 这里【一定会执行1次】 } while(条件);执行顺序执行代码块 → 判断条件 → 决定要不要继续循环哪怕 while(0) 条件直接不成立大括号里依旧跑1次。四大真实妙用全是实战场景不是纸上谈兵妙用1必须先做一次操作再判断要不要重复最常用场景用户输入校验、菜单选择、交互逻辑比如让用户输入一个数字至少输入一次再判断合不合法不合法就重输。#include int main() { int num; do { printf(请输入1~10之间的数字); scanf(%d, num); } while (num 1 || num 10); // 不合法就循环重输 printf(输入合法%d, num); return 0; }- 用 while 还要先写一次输入- 用 do…while 天然保证至少输入一次代码更干净妙用2至少执行一次的初始化 / 清理逻辑底层、驱动、单机程序高频写底层、嵌入式、工具程序时有些初始化、资源释放、内存清理必须先执行一次再判断是否继续循环处理。比如循环处理文件先打开一次再判断是否还有数据do { // 必须先读取一次数据 read_data(); } while (has_more_data());优势就算没有数据初始化/读取流程也完整跑一遍不会漏执行关键步骤。妙用3跳出多层循环的极简写法底层常用小技巧很多人不知道 do…while(0) 是C语言万能代码块、宏封装神器。特点只执行1次直接结束用来包裹代码块方便 break 跳出。do { if (error1) break; if (error2) break; // 正常业务逻辑 } while(0);- 只会执行一次- 中间任意地方 break 就能跳出整块代码底层驱动、嵌入式、开源库大量用这个写法比goto优雅太多。妙用4第一次无条件执行后续按条件循环状态机、硬件通信硬件、传感器、车载程序里特别常见第一次必须发送指令之后根据反馈决定要不要重试do { send_cmd(); // 第一次必发 } while (!check_ok()); // 没成功就一直重发- 第一次强制发送指令- 失败自动重试成功停止完美适配硬件通信、网络重试、故障重试逻辑。一句话总结核心妙用do…while 最不可替代的本质先做事后判断保证至少执行一次不用重复写前置代码。1. 输入校验、菜单交互2. 底层初始化、资源处理3. do…while(0) 代码块封装4. 硬件重试、状态机逻辑看似简单的循环语法底层开发、单机软件里全是细节。后续持续更新纯C语言底层干货新手少走弯路喜欢可以关注。#C语言#​ #编程入门#​ #程序员干货#​ #循环语句#​ #计算机底层#​ #单机软件#​#c语言学习#​

相关新闻

Django毕设项目:基于 Django 的多功能网上购物电商服务系统设计 个人用户线上购物消费管理系统 (源码+文档,讲解、调试运行,定制等)

Django毕设项目:基于 Django 的多功能网上购物电商服务系统设计 个人用户线上购物消费管理系统 (源码+文档,讲解、调试运行,定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/10/15 16:07:54 阅读更多 →
Django毕设项目:基于Django的智慧文旅公园资源定位服务平台实现 城市休闲公园信息归档与定位查询系统 (源码+文档,讲解、调试运行,定制等)

Django毕设项目:基于Django的智慧文旅公园资源定位服务平台实现 城市休闲公园信息归档与定位查询系统 (源码+文档,讲解、调试运行,定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/10/12 3:07:56 阅读更多 →
容器网络延时与乱序包:veth 的开销到底有多大?

容器网络延时与乱序包:veth 的开销到底有多大?

容器网络延时与乱序包:veth 的开销到底有多大?实验环境:Ubuntu 24.04 / 内核 6.8.0-106-generic / Cgroup v2 / Docker 29.1.3 / 华为云 FlexusX 8C16G(8vCPU/16G)。 全程只操作 docker0 / veth / 自建 netns&#xff…

2026/10/14 18:01:30 阅读更多 →

最新新闻

复现膀胱癌机器学习顶刊论文:影像组学、多组学与病理切片实战

复现膀胱癌机器学习顶刊论文:影像组学、多组学与病理切片实战

前阵子集中干了件事:把三篇顶刊上关于膀胱癌与机器学习的论文端到端复现了一遍。说是“复现”,其实不光是跑通代码,而是从公开数据源把原始数据拉下来,按论文的方法描述重新做特征提取、建模、评估,最后跟论文报告的数…

2026/10/15 16:08:28 阅读更多 →
ELMo与BERT在FAQ问答机器人中的语义匹配实战对比

ELMo与BERT在FAQ问答机器人中的语义匹配实战对比

1. 项目起底:FAQ问答机器人为什么需要ELMo和BERT1.1 先看需求:FAQ问答机器人到底在解决什么问题先从一个最常见的场景说起。无论是电商客服、银行客服,还是企业内部IT支持,海量重复问题占据了大部分咨询量。"我的订单什么时候…

2026/10/15 16:08:28 阅读更多 →
Legion Zone卸载后驱动残留怎么办?拯救者清理与恢复全指南

Legion Zone卸载后驱动残留怎么办?拯救者清理与恢复全指南

很多拯救者用户跟我吐槽过同一个问题:联想 Legion Zone 卸载之后,系统里还会残留一堆用不上的驱动组件,看着像垃圾驱动,删又不敢乱删。今天这篇就把这件事彻底讲清楚——Legion Zone 到底装了哪些驱动、哪些能删、哪些千万别碰&am…

2026/10/15 16:08:28 阅读更多 →
DeepSeek与OpenAI技术路径差异及工程选型指南

DeepSeek与OpenAI技术路径差异及工程选型指南

简介:本资源是一份聚焦人工智能前沿竞争格局的深度对比分析报告,面向AI研究人员、技术决策者及对大模型发展路径感兴趣的从业者,旨在厘清DeepSeek与OpenAI在技术路线、应用落地与商业策略上的关键差异。全文以详实数据支撑观点,涵…

2026/10/15 16:08:28 阅读更多 →
核线影像纠正原理与C++高精度实现:从基础矩阵到亚像素重采样

核线影像纠正原理与C++高精度实现:从基础矩阵到亚像素重采样

简介:本资源是一套完整的核线影像纠正C实现程序,面向遥感图像处理方向的开发者、GIS工程师及高校测绘/地信专业高年级学生,用于解决卫星或航空影像因地球曲率与传感器姿态导致的几何失真问题,支撑立体匹配、数字高程模型生成等关键…

2026/10/15 16:08:28 阅读更多 →
梯度下降法MATLAB实现:从代价曲线到参数调优全解析

梯度下降法MATLAB实现:从代价曲线到参数调优全解析

简介:梯度下降法是机器学习与优化问题中最常用的数值求解方法之一,对于需要实现线性回归、逻辑回归或神经网络权重更新的MATLAB用户,这份程序提供了直接可用的代码参考。资源仅包含1个m文件,压缩后大小2KB,轻量小巧&am…

2026/10/15 16:07:27 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →