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/7/27 19:00:02 阅读更多 →
JAVA毕设项目:基于SpringBoot的宠物领养预约与跟进服务管理系统设计 公益宠物科普与领养帮扶平台实现 (源码+文档,讲解、调试运行,定制等)

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

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

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

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

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

2026/7/27 19:00:02 阅读更多 →

最新新闻

Logseq Anki Sync 终极指南:如何实现知识卡片的高效同步

Logseq Anki Sync 终极指南:如何实现知识卡片的高效同步

Logseq Anki Sync 终极指南:如何实现知识卡片的高效同步 【免费下载链接】logseq-anki-sync An logseq to anki syncing plugin with superpowers - image occlusion, card direction, incremental cards, and a lot more. 项目地址: https://gitcode.com/gh_mirr…

2026/7/27 19:07:04 阅读更多 →
气动元器件选型(精密版)

气动元器件选型(精密版)

这是小丸子第十期的气动元器件选型,是最精密的版本 迷你气缸 | MA系列气缸 | AirTAC | 亚德客 1.气动技术基础 1.概述:机器通常是由原动机、传动装置、工作机构三部分组成。传动装置常见的类型有机械传动、流体传动。流体传动是以受压的流体为工作介质对能量的转化、传递、控…

2026/7/27 19:07:04 阅读更多 →
泛程序心得:小白建站超简单

泛程序心得:小白建站超简单

在互联网时代,拥有一个属于自己的网站是很多人的梦想。然而,对于小白来说,建站似乎是一件遥不可及的事情。但其实,只要掌握了泛程序的方法,小白建站也可以超简单!我曾经也是个建站小白,面对复杂…

2026/7/27 19:07:04 阅读更多 →
终极指南:使用XB1ControllerBatteryIndicator轻松监控Xbox控制器电量 [特殊字符]

终极指南:使用XB1ControllerBatteryIndicator轻松监控Xbox控制器电量 [特殊字符]

终极指南:使用XB1ControllerBatteryIndicator轻松监控Xbox控制器电量 🔋 【免费下载链接】XB1ControllerBatteryIndicator A tray application that shows a battery indicator for an Xbox-ish controller and gives a notification when the battery l…

2026/7/27 19:07:04 阅读更多 →
如何在Zend-Expressive中实现RESTful API:从路由到响应的完整教程

如何在Zend-Expressive中实现RESTful API:从路由到响应的完整教程

如何在Zend-Expressive中实现RESTful API:从路由到响应的完整教程 【免费下载链接】zend-expressive PSR-15 middleware in minutes! 项目地址: https://gitcode.com/gh_mirrors/ze/zend-expressive Zend-Expressive是一个轻量级的PSR-15中间件框架&#xff…

2026/7/27 19:07:04 阅读更多 →
api2go源码解析:核心组件的设计思路与实现细节

api2go源码解析:核心组件的设计思路与实现细节

api2go源码解析:核心组件的设计思路与实现细节 【免费下载链接】api2go JSONAPI.org Implementation for Go 项目地址: https://gitcode.com/gh_mirrors/ap/api2go api2go是Go语言中实现JSONAPI.org规范的强大库,它提供了完整的RESTful API开发框…

2026/7/27 19:06:04 阅读更多 →

日新闻

【JAVA毕设源码分享】基于SpringBoot的社区智能垃圾管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于SpringBoot的社区智能垃圾管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

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

2026/7/27 0:00:54 阅读更多 →
SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

1. 项目概述:从寄存器手册到实战指南 如果你手头有一份类似德州仪器(TI)TMS320x240xA系列DSP的SPI模块技术手册,看着里面密密麻麻的寄存器位定义、时序图和公式,是不是感觉头大?这份资料虽然权威&#xff0…

2026/7/27 0:00:54 阅读更多 →
【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

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

2026/7/27 0:00:54 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/27 4:33:59 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/27 6:31:56 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/27 4:01:12 阅读更多 →

月新闻