AI开发C语言应用按步走,表达式计算器calc的第十五步,进制数字与位运算符
calc15 —进制数字与位运算符1. 概述本次迭代新增了进制数字识别和位运算功能支持十六进制、八进制、二进制字面量以及 C 语言风格的位运算符。新增功能类别语法示例十六进制0x/0X前缀0xFF→ 255八进制0前缀后跟0-70777→ 511二进制0b/0B前缀0b1010→ 10按位与3 6→ 2按位或|3 | 6→ 7按位异或^3 ^ 6→ 5按位取反~~0→ -1左移1 3→ 8右移8 2→ 22. 变更清单文件操作说明parse.h编辑TokenType 新增 6 个类型BITNOT/BITAND/BITOR/BITXOR/SHL/SHR注释更新parse.c编辑进制数字识别strtol0x/0b/0前缀检测位运算符 token|^~update_expect/token_name更新eval.c重写新增 4 层语法层bitor/bitxor/bitand/shiftunary增加~分支test.expr编辑新增 12 个进制/位运算测试用例总数 58→703. 数字解析3.1 识别逻辑在parse_next中数字识别分支按优先级检查1. 0x / 0X → strtol(..., 16) 十六进制 2. 0b / 0B → strtol(..., 2) 二进制 3. 0 后跟 0-7 → strtol(..., 0) 八进制自动识别 4. 其他 → strtod 十进制 / 浮点3.2 示例0xFF→2550xff→2550b1010 →100777→511// 八进制0→0// 十进制零3.14→3.14// 浮点4. 位运算符4.1 新增 TokenToken运算符含义TOKEN_BITAND按位与TOKEN_BITOR|按位或TOKEN_BITXOR^按位异或TOKEN_BITNOT~按位取反一元TOKEN_SHL左移TOKEN_SHR右移4.2 多字符运算符优先级在parse_next中和在单字符之前检查和||在单字符\|之前检查多字符检查顺序 → ! → → → → → → || 单字符 fallback ! ~ | ^ ...5. 优先级体系5.1 完整优先级表从低到高优先级语法层运算符结合性1 (最低)expr_or||左结合2expr_and左结合3expr_bitor|左结合4expr_bitxor^左结合5expr_bitand左结合6expr_equality!左结合7expr_shift左结合8expr_relational左结合9expr_additive-左结合10expr_multiplicative*/%左结合11unary!~-右结合5.2 文法expr → expr_or expr_or → expr_and ((||) expr_and)* expr_and → expr_bitor (() expr_bitor)* expr_bitor → expr_bitxor ((|) expr_bitxor)* expr_bitxor → expr_bitand ((^) expr_bitand)* expr_bitand → expr_equality (() expr_equality)* expr_equality → expr_shift (( | !) expr_shift)* expr_shift → expr_relational (( | ) expr_relational)* expr_relational → expr_additive (( | | | ) expr_additive)* expr_additive → expr_multiplicative (( | -) expr_multiplicative)* expr_multiplicative → unary ((* | / | %) unary)* unary → (- | ! | ~) unary | factor factor → NUMBER | IDENTIFIER | TRUE | FALSE | ( expr )6. 测试验证$maketestcalc — 测试套件...(前58个测试用例)... PASS[59]0xFF →255PASS[60]0xff →255PASS[61]0b1010 →10PASS[62]0777 →511PASS[63]36→2PASS[64]3|6→7PASS[65]3^6 →5PASS[66]~0 →-1PASS[67]13→8PASS[68]82→2PASS[69]0xFF0x0F →15PASS[70]352→070passed,0failed,70total优先级验证表达式结果验证点3520优先于8 2 013232优先于1 5 32~010~优先于~0 -1,-1 1 0

相关新闻

YOLOv11在工业传送带物体检测中的实践与优化

YOLOv11在工业传送带物体检测中的实践与优化

## 1. 项目背景与核心需求在工业自动化领域,传送带物体检测是实现智能分拣、质量控制和流程优化的关键技术。传统基于规则或机器视觉的方法在面对复杂背景、多目标重叠和高速运动场景时往往表现不佳。这个毕业设计项目正是针对这一痛点,采用当前最先进的…

2026/10/17 18:42:44 阅读更多 →
AI生成内容检测与规避:学术写作实战指南

AI生成内容检测与规避:学术写作实战指南

1. 项目背景与核心痛点去年帮学弟改论文时发现,现在高校对AI生成内容的检测严格到令人发指。某985高校的查重系统新增了"AIGC率"指标,超过15%直接打回重写。更离谱的是,有些教授会拿着学生的文档丢进七八个检测工具轮番轰炸。目前市…

2026/10/17 5:28:28 阅读更多 →
AI版权争议:从Anthropic和解案看LLM训练数据的合理使用边界

AI版权争议:从Anthropic和解案看LLM训练数据的合理使用边界

在人工智能技术快速发展的背景下,大型语言模型训练数据的版权问题日益成为行业关注的焦点。Anthropic 作为生成式 AI 领域的重要参与者,其 Claude 模型因使用受版权保护的文本内容进行训练而面临法律挑战。经过数月协商,涉及 15 亿美元的和解…

2026/10/17 19:02:01 阅读更多 →

最新新闻

告别加班!Windows 一键部署 Open Claw,下班前搞定全天工作量|TaoToken 统一 Key 接入

告别加班!Windows 一键部署 Open Claw,下班前搞定全天工作量|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/18 12:50:38 阅读更多 →
空间平滑MUSIC算法:相干信源DOA估计原理与MATLAB实战

空间平滑MUSIC算法:相干信源DOA估计原理与MATLAB实战

简介:空间平滑MUSIC算法MATLAB实现,面向阵列信号处理与DOA估计方向的初学者和研究人员,用于提升多信号源、相干信号环境下的到达方向估计精度。压缩包内共3个m文件,大小仅3KB,分别对应主程序与两种空间平滑处理实现&am…

2026/10/18 12:50:38 阅读更多 →
MATLAB实现5G NOMA用户配对与功率分配仿真

MATLAB实现5G NOMA用户配对与功率分配仿真

简介:本资源是一套面向通信工程专业学生、5G算法研究者及MATLAB仿真初学者的NOMA用户配对完整实践方案,聚焦5G网络中非正交多址接入的关键技术难点——如何科学配对信道条件差异显著的用户以提升系统吞吐量与公平性。压缩包共15个文件,含7个核…

2026/10/18 12:50:38 阅读更多 →
基于爬虫与协同过滤的高考志愿推荐系统设计与实现

基于爬虫与协同过滤的高考志愿推荐系统设计与实现

简介:这套基于爬虫的高考志愿智能推荐系统是面向Java毕设的完整项目资源,采用Spring BootVue前后端分离架构,并集成Python爬虫采集中国教育在线高校录取数据。系统覆盖考生端与后台管理端,包含院校专业查询、位次查询、MBTI职业性…

2026/10/18 12:50:38 阅读更多 →
基于Java Web的宿舍管理系统:架构解析、部署与自动排房开发

基于Java Web的宿舍管理系统:架构解析、部署与自动排房开发

简介:这套基于Java的学生宿舍管理系统设计与实现,面向Java Web初学者及高校课程设计、毕业设计人群,提供从需求分析、数据库设计到前后端交互的完整项目方案。压缩包共661个文件,总大小约77.19MB,包含Java源码、SQL脚本…

2026/10/18 12:50:38 阅读更多 →
Windows下VSCode+MinGW+OpenCV+CMake环境配置与源码编译指南

Windows下VSCode+MinGW+OpenCV+CMake环境配置与源码编译指南

先聊个现象:很多人在 Windows 上配 C 开发环境,第一反应是装 VS(Visual Studio),点两下就能跑起来,确实省事。但等你要用 OpenCV 做图像处理、放进项目仓库给不同机器复用、或者临时想在 VSCode 里快速改个…

2026/10/18 12:49:37 阅读更多 →

日新闻

基于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/18 12:16:16 阅读更多 →