AI开发C语言应用按步走,表达式计算器calc的第二十步,魔法数修复、测试分隔符、位运算截断检查、进制溢出检查 calc20 — 魔法数修复、测试分隔符、位运算截断检查、进制溢出检查1. 概述本次迭代从 suggestions.md 中选取了 4 个待改进项进行修复涵盖代码质量、测试框架和运行时健壮性三个方面。修复项编号问题类型C1var_name[32]魔法数代码质量G3测试文件分隔符与表达式分隔符;冲突测试框架G4位运算截断int无警告运行时健壮性G5进制数溢出无检查运行时健壮性2. 变更清单文件操作说明main.c编辑var_name[32]→var_name[MAX_NAME]2 处test.expr编辑分隔符;→反引号避免与表达式分隔符;冲突Makefile编辑IFS;→IFS\eval.c编辑新增#include limits.hcheck_int_trunc()函数6 处(int)转换前添加截断检查parse.c编辑新增#include errno.h#include stdio.h3 处strtoul后添加errno ERANGE溢出检查3. C1 —var_name[32]魔法数3.1 改造前charvar_name[32];硬编码的 32与parse.h中Token.name[32]无显式关联。3.2 改造后charvar_name[MAX_NAME];MAX_NAME在parse.h中定义为32两处统一引用修改一端时同步更新。4. G3 — 测试文件分隔符4.1 问题test.expr使用;作为字段分隔符但;现在也是合法的表达式分隔符表达式分隔功能导致1;2;3等表达式无法在测试文件中使用。4.2 方案将分隔符改为反引号原因反引号在 calc 的词法分析器中永远为非法字符TOKEN_ERROR不会与任何合法表达式冲突。文件改动test.expr;→MakefileIFS;→IFS\同时保留了;作为表达式分隔符的功能不变。5. G4 — 位运算截断检查5.1 问题eval.c中位运算操作数先转为int32 位超出INT_MAX2147483647的值被静默截断用户得不到提示。5.2 方案新增check_int_trunc函数在 6 处(int)转换前调用staticintcheck_int_trunc(longdoublev){if(vINT_MAX||vINT_MIN){fprintf(stderr, warning: value truncated to int\n);return1;}return0;}调用位置parse_bitor、parse_bitxor、parse_bitand、parse_shiftSHL/SHR、parse_unaryBITNOT。6. G5 — 进制数溢出检查6.1 问题parse.c中strtoul解析十六进制/二进制/八进制数字时超出unsigned long范围的值被静默截断为ULONG_MAX用户得不到提示。6.2 方案在每个strtoul调用前重置errno 0调用后检查errno ERANGEerrno0;val(longdouble)strtoul(input_pos,end,16);if(errnoERANGE)fprintf(stderr, warning: integer overflow\n);7. 测试验证$maketestcalc — 测试套件122passed,0failed,122total全部 122 个回归测试通过功能不变新增的检查仅在溢出/截断时输出警告不影响正常计算结果。

相关新闻

相关新闻

AI开发C语言应用按步走,表达式计算器calc的第十九步,注释、表达式分隔符、long double 精度

AI开发C语言应用按步走,表达式计算器calc的第十九步,注释、表达式分隔符、long double 精度

calc19 — 注释、表达式分隔符、long double 精度 1. 概述 本次迭代新增三项功能,并对全局数值类型进行了精度升级: 注释支持 — # 开头到行尾的内容被忽略表达式分隔符 — ; 分隔多个表达式,返回最后一个的值long double 精度 — 全局 doubl…

2026/9/27 1:44:30
JAVA毕设项目:基于 SpringBoot+Vue 的企业知识产权合规审核管理平台设计 信息化知识产权档案存储与查询系统 (源码+文档,讲解、调试运行,定制等)

JAVA毕设项目:基于 SpringBoot+Vue 的企业知识产权合规审核管理平台设计 信息化知识产权档案存储与查询系统 (源码+文档,讲解、调试运行,定制等)

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

2026/9/24 4:06:36
JAVA毕设项目:基于SpringBoot的宠物领养预约与跟进服务管理系统设计 公益宠物科普与领养帮扶平台实现 (源码+文档,讲解、调试运行,定制等)

JAVA毕设项目:基于SpringBoot的宠物领养预约与跟进服务管理系统设计 公益宠物科普与领养帮扶平台实现 (源码+文档,讲解、调试运行,定制等)

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

2026/9/25 4:10:17

最新新闻

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现 【免费下载链接】serenity The Serenity Operating System 🐞 项目地址: https://gitcode.com/GitHub_Trending/se/serenity 导读 本文以 getopt(3) 手册 为核心&a…

2026/9/26 23:24:47
轻量服务器还是ECS?大促云服务器选购与避坑实战指南

轻量服务器还是ECS?大促云服务器选购与避坑实战指南

每年大促节点,群里永远有人在问同一个问题:“38元的轻量服务器到底怎么抢?为什么我每次点进去都是已售罄?68元直购和99元的ECS我到底选哪个?”作为一个常年帮团队和自己采购云服务器的老用户,我太清楚这种纠…

2026/9/26 18:48:15
为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南 【免费下载链接】agents Multi-harness agentic plugin marketplace for Claude Code, Codex, Cursor, OpenCode, GitHub Copilot, and Google Antigravity 项目地址:…

2026/9/26 3:42:08
PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署 【免费下载链接】PaddleOCR Turn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between i…

2026/9/26 11:37:29
Spring源码解析:构造器注入的类型转换与候选匹配机制

Spring源码解析:构造器注入的类型转换与候选匹配机制

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

2026/9/26 4:08:27
openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由 【免费下载链接】openai-agents-python A lightweight, powerful framework for multi-agent workflows 项目地址: https://gitcode.com/GitHub_Trending/op/openai-agents-pyth…

2026/9/26 21:11:24

日新闻

周新闻