AI开发C语言应用按步走,表达式计算器calc的第十九步,注释、表达式分隔符、long double 精度
calc19 — 注释、表达式分隔符、long double 精度1. 概述本次迭代新增三项功能并对全局数值类型进行了精度升级注释支持—#开头到行尾的内容被忽略表达式分隔符—;分隔多个表达式返回最后一个的值long double 精度— 全局double→long double提升运算精度2. 变更清单文件操作说明parse.h编辑新增TOKEN_SEMICOLONToken.value类型double→long doubleparse.c重写#注释跳过;解析为TOKEN_SEMICOLONstrtold/strtoul替换strtodeval.h编辑API 参数double*→long double*新增eval_exprs声明eval.c重写全部double→long doublefmod→fmodl新增eval_exprs实现sym.h编辑API 参数double→long doublesym.c编辑SymEntry.valuedouble→long double%Lgfunc.h编辑API 参数double*→long double*func.c重写args/valdouble→long doublesinl/cosl等l后缀数学函数main.c重写double→long double%Lg调用eval_exprs替代eval_exprtest.expr编辑修复溢出测试值新增#注释测试修复0b1010/0777解析3. 注释支持在parse_next中当遇到#时跳过直到行尾或字符串结束if(*input_pos#){while(*input_pos*input_pos!\n){column;input_pos;}if(*input_pos\n){line;column1;input_pos;}returnparse_next();/* 递归获取下一个 token */}示例calc 3 5 # 这是注释 84. 表达式分隔符4.1 新增eval_exprsAPIinteval_exprs(constchar*input,longdouble*result);循环解析多个以;分隔的表达式返回最后一个的值inteval_exprs(constchar*input,longdouble*result){parse_init(input);eval_error0;longdoubleval0.0;while(!eval_error){valparse_expr();if(eval_error)return1;Token tparse_peek();if(t.typeTOKEN_SEMICOLON){parse_consume();continue;}if(t.type!TOKEN_END){print_error_context(t.col);fprintf(stderr, error: unexpected token after expression\n);return1;}break;}*resultval;return0;}4.2 使用$ ./build/calc1; 2; 334.3 默认切换parse_and_eval和repl均改为调用eval_exprs因此;分隔符在所有模式下均可使用。5. long double 精度升级5.1 涉及范围组件类型变更影响Token 数值double→long double解析和存储求值器double→long double全部运算符号表double→long double变量值函数表double→long double参数和返回值主程序double→long double输出格式%Lg5.2 数学函数后缀所有math.h函数调用改为l后缀版本函数原版long double 版正弦sinsinl余弦coscosl正切tantanl平方根sqrtsqrtl幂运算powpowl取模fmodfmodl绝对值fabsfabsl5.3 精度提升类型尾数位数十进制精度最大值double53 bits~15 位~1.79e308long double64 bits~19 位~1.19e49326. 测试验证$maketestcalc — 测试套件PASS[1](90-18)/315 →39... PASS[30]1e5000*1e5000 → error... PASS[61]0b1010 →10PASS[62]0777 →511... PASS[122]35# comment → 8122passed,0failed,122total

相关新闻

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

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

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

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

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

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

2026/10/18 0:41:00 阅读更多 →
JAVA毕设项目: 基于Java的信息化企业员工考核成绩管理系统 企业岗位培训在线测评考试系统设计(源码+文档,讲解、调试运行,定制等)

JAVA毕设项目: 基于Java的信息化企业员工考核成绩管理系统 企业岗位培训在线测评考试系统设计(源码+文档,讲解、调试运行,定制等)

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

2026/10/16 0:47:53 阅读更多 →

最新新闻

IDEA升级后无法启动?从日志到插件、JDK、VM参数的完整排查指南

IDEA升级后无法启动?从日志到插件、JDK、VM参数的完整排查指南

点了升级按钮之后,IDE 就再也进不去了——这个问题我见过太多次。图标转了两圈消失在任务栏里,或者进度条走到一半直接闪退,又或者弹出一个 Internal Error 窗口,点完确定一切归零。多数人的第一反应是卸载重装,但这里…

2026/10/18 3:04:12 阅读更多 →
Git push报错全解析:non-fast-forward、权限拒绝与分支不匹配的排查与解决

Git push报错全解析:non-fast-forward、权限拒绝与分支不匹配的排查与解决

1. 从一次深夜提交失败说起:为什么git push的报错值得单独拎出来讲但凡写过几年代码的人,几乎都有过这样的经历:本地跑得好好的,commit也提交了,结果一个git push下去,终端里蹦出一段红字,整个人…

2026/10/18 3:04:12 阅读更多 →
网盘直链免费解析全指南:8 大网盘真实下载地址 5 步拿到

网盘直链免费解析全指南:8 大网盘真实下载地址 5 步拿到

网盘直链免费解析全指南:8 大网盘真实下载地址 5 步拿到 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天…

2026/10/18 3:04:12 阅读更多 →
G-Helper电池限制不生效?按这3个场景自查修复

G-Helper电池限制不生效?按这3个场景自查修复

G-Helper电池限制不生效?按这3个场景自查修复 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook, Expertbook…

2026/10/18 3:04:12 阅读更多 →
从功能测试到问题定位:ob系统测试中的典型踩坑与复盘

从功能测试到问题定位:ob系统测试中的典型踩坑与复盘

前一阵子接手了内部代号ob的系统功能测试,从环境搭建到用例执行,再到问题记录和排查,整个过程差不多横跨了两周时间。这块负责的主流业务是数据流转和工单处理,听起来不复杂,但真跑起来之后发现,越普通的系…

2026/10/18 3:04:12 阅读更多 →
Kimi-K3-DSpark-MLA-NPU部署实战:NPU推理加速从零到生产级完整清单

Kimi-K3-DSpark-MLA-NPU部署实战:NPU推理加速从零到生产级完整清单

【免费下载链接】Kimi-K3-DSpark-MLA-NPU 项目地址: https://ai.gitcode.com/Eco-Tech/Kimi-K3-DSpark-MLA-NPU 点击查看 免费下载 Kimi-K3-DSpark-MLA-NPU 是面向 NPU 推理加速 的 Kimi K3 大模型投机解码草稿模型(Draft Model)&#xff0c…

2026/10/18 3:03:07 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 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/18 0:55:02 阅读更多 →
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/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练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/16 14:23:36 阅读更多 →