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

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

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

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

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

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

2026/7/27 19:00:08

最新新闻

秒杀系统安全防护:seckill项目如何防止数据篡改与恶意请求

秒杀系统安全防护:seckill项目如何防止数据篡改与恶意请求

秒杀系统安全防护:seckill项目如何防止数据篡改与恶意请求 【免费下载链接】seckill Java高并发秒杀API(慕课网) 项目地址: https://gitcode.com/gh_mirrors/secki/seckill 在高并发的秒杀场景中,数据安全与请求防护是保障…

2026/7/27 19:45:11
提升Laravel-Kafka性能的10个技巧:异步生产者与批量提交优化

提升Laravel-Kafka性能的10个技巧:异步生产者与批量提交优化

提升Laravel-Kafka性能的10个技巧:异步生产者与批量提交优化 【免费下载链接】laravel-kafka Use Kafka Producers and Consumers in your laravel app with ease! 项目地址: https://gitcode.com/gh_mirrors/la/laravel-kafka Laravel-Kafka是一款专为Larav…

2026/7/27 19:45:11
Stacker插件开发指南:构建自定义Hooks与Lookups扩展

Stacker插件开发指南:构建自定义Hooks与Lookups扩展

Stacker插件开发指南:构建自定义Hooks与Lookups扩展 【免费下载链接】stacker An AWS CloudFormation Stack orchestrator/manager. 项目地址: https://gitcode.com/gh_mirrors/st/stacker Stacker作为AWS CloudFormation Stack的编排管理工具,提…

2026/7/27 19:45:11
Sunglasses开源框架:AI代理输入扫描与安全防护实战指南

Sunglasses开源框架:AI代理输入扫描与安全防护实战指南

在AI应用快速发展的今天,如何确保AI代理接收到的输入数据是安全、合规且结构化的,成为许多开发者面临的现实挑战。特别是在处理用户上传文件、解析外部数据源或构建自动化工作流时,输入数据的质量和安全性直接影响到整个系统的稳定性。本文要…

2026/7/27 19:45:11
AI内容安全:风险挑战与风控技术演进

AI内容安全:风险挑战与风控技术演进

1. AI内容安全:一场看不见硝烟的战争195元的螃蟹退款诈骗案和2500万美元的AI视频会议骗局,这两个看似毫不相关的案例,却揭示了一个令人不安的事实:AI技术正在被滥用,而我们大多数人甚至没有意识到这场"暗战"…

2026/7/27 19:45:11
Windows 11图片缩略图无法显示的终极解决方案

Windows 11图片缩略图无法显示的终极解决方案

1. 问题背景与现象解析Windows 11作为微软最新的操作系统,在图片管理功能上却出现了一个让很多用户头疼的问题——图片缩略图无法正常显示。这个看似小问题实际上严重影响工作效率,特别是对于摄影师、设计师、电商从业者等需要频繁浏览大量图片的用户群体…

2026/7/27 19:40:10

月新闻