Skip to content

docs(cpp): 补全 inline constexpr 练习答案 - #206

Merged
Charliechen114514 merged 1 commit into
Awesome-Embedded-Learning-Studio:mainfrom
xiaoshuaijie:ch03-4
Sep 3, 2026
Merged

docs(cpp): 补全 inline constexpr 练习答案#206
Charliechen114514 merged 1 commit into
Awesome-Embedded-Learning-Studio:mainfrom
xiaoshuaijie:ch03-4

Conversation

@xiaoshuaijie

Copy link
Copy Markdown
Contributor

修复说明

本 PR 完善 inlineconstexpr 教程中的三道练习参考答案,并统一示例代码格式。

此前练习部分只有题目,缺少可运行的参考实现;同时已有示例存在缩进、命名、命令空格和函数签名不一致等问题,容易影响读者理解和复制运行。

修复类型

  • 内容勘误
  • 示例代码问题
  • 现有文章改进
  • 站点显示或导航问题
  • 链接或搜索问题
  • 构建、CI 或脚本问题
  • 翻译修正

具体改动

涉及文件:

  • documents/vol1-fundamentals/ch03/04-inline-constexpr.md

练习一:constexpr 最大公约数

  • 添加基于欧几里得算法的递归 constexpr gcd 实现。
  • 添加 static_assert,验证:
    • gcd(12, 8) == 4
    • gcd(100, 75) == 25
  • 补充完整的编译命令和运行结果。

练习二:编译期斐波那契查找表

  • 添加迭代版 constexpr fibonacci() 函数。
  • 生成 std::array<std::uint32_t, 30> 查找表。
  • 添加 static_assert,验证:
    • table[10] == 55
    • table[20] == 6765
  • 将函数命名统一为项目使用的 snake_case 风格。
  • 使用 fib.size()table.size() 控制循环边界。
  • 修正示例代码缩进和 include 顺序。

练习三:constexpr popcount

  • 将函数签名统一为题目要求的 constexpr int count_bits(int n)
  • 在函数内部使用 unsigned int 执行 Brian Kernighan 位计数算法,避免对负数执行有符号溢出操作。
  • 添加 static_assert,验证:
    • count_bits(0) == 0
    • count_bits(7) == 3
    • count_bits(255) == 8

其他格式调整

  • 统一 Allman 大括号风格和 4 空格缩进。
  • 补充代码块之间的空行。
  • 统一 << 运算符空格。
  • 修正编译命令中的多余空格及 && 两侧空格。
  • 将“编译运行:”和“运行结果:”统一为中文标点。
  • reading_time_minutes12 更新为 19

影响范围

仅影响上述教程文章,不涉及:

  • 站点导航或 sidebar
  • 其他章节内容
  • CMake 配置
  • 运行时代码
  • API 或公共接口

本篇文章原有位置和链接无需调整。

验证方式

已完成以下检查:

  • 三个参考答案均使用 g++ -std=c++17 -Wall -Wextra -pedantic 编译通过。
  • 三个示例程序均正常运行并返回退出码 0
  • markdownlint 检查通过。
  • scripts/check_quality.py documents/vol1-fundamentals/ch03 检查通过。
  • scripts/validate_frontmatter.py 检查通过,991 个 Markdown 文件全部有效。
  • git diff --check 检查通过。

关联 Issue / Discussion

暂无。

@Charliechen114514

Copy link
Copy Markdown
Member

摸个🐟,看起来没啥问题,approve了

@Charliechen114514
Charliechen114514 merged commit 2523f31 into Awesome-Embedded-Learning-Studio:main Sep 3, 2026
5 checks passed
@xiaoshuaijie
xiaoshuaijie deleted the ch03-4 branch September 4, 2026 06:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants