Skip to content

docs(cpp): 补充C++的类型与值类别的练习参考答案 - #171

Merged
Charliechen114514 merged 3 commits into
Awesome-Embedded-Learning-Studio:mainfrom
xiaoshuaijie:C++11_exe
Aug 29, 2026
Merged

docs(cpp): 补充C++的类型与值类别的练习参考答案#171
Charliechen114514 merged 3 commits into
Awesome-Embedded-Learning-Studio:mainfrom
xiaoshuaijie:C++11_exe

Conversation

@xiaoshuaijie

Copy link
Copy Markdown
Contributor

概述

为第 1 卷第 1 章的 4 篇基础教程补充“动手试试”部分的折叠式参考答案、编译命令与示例输出,帮助学习者在完成练习后自主核对实现和理解结果。

本 PR 共修改 4 篇文档,新增 461 行、删除 5 行;不包含站点配置、构建脚本或示例工程结构调整。

改动内容

基本数据类型

  • 补充整数类型及固定宽整数类型的 sizeofstd::numeric_limits 参考实现。
  • 补充 C++ 与 C 中 sizeof('A')sizeof(true) 及浮点字面量大小的对比示例。
  • 说明 C17 与 C23 中 true 的差异。
  • 补充 floatdouble 分别累加 0.1 十次的精度误差实验。
  • 更新文章预计阅读时长。

类型转换

  • 补充安全温度转换器的完整参考答案。
  • 使用 double 参与计算,并通过 std::fixedstd::setprecision(1) 保持输出格式稳定。

const 初探

  • 补充 const int*int* constconst int* const 的行为演示,并保留会导致编译错误的语句作为注释。
  • 补充使用 constexprstd::clamp 实现圆面积计算的参考答案。
  • 补充使用 const int& 作为函数参数的求和示例。
  • 更新文章预计阅读时长。

值类别简介

  • 补充“修复悬空引用”练习的参考答案。
  • 通过具有静态存储期的局部变量避免返回局部对象引用后产生悬空引用。
  • 补充对应的编译命令和运行结果。

影响范围

  • 仅影响 documents/vol1-fundamentals/ch01/ 下的教学文档。
  • 新增代码片段均以 C++20 编译命令展示。
  • 基础类型大小和范围与目标平台及 ABI 有关,文档中的示例输出仅作为示例,不应视为跨平台固定结果。

验证

  • 使用项目虚拟环境运行 frontmatter 校验:981 篇 Markdown 文档全部通过。
  • 本地未安装 markdownlint 命令,尚未执行 Markdown lint。
  • 本次 PR 整理过程中未重新逐段编译所有文档中的代码片段。

审查重点

  • C 与 C++ 的 sizeof 示例及 C17/C23 差异说明是否准确、足够清晰。
  • 运行结果是否与所附代码及编译选项一致。
  • “悬空引用”练习使用静态局部变量的修复方式,是否符合该章节希望传达的教学重点。

@xiaoshuaijie xiaoshuaijie changed the title docs(vol1): 补充第1章练习参考答案 docs(vol1): 补充C++的类型与值类别的练习参考答案 Aug 27, 2026
@Charliechen114514

Copy link
Copy Markdown
Member

我看您练习做的好快好多,其实的话可以慢一些的!一篇一篇提交最合适,这样的话bro压力也小,毕竟这也不是作业hhh

@Charliechen114514

Copy link
Copy Markdown
Member

感谢贡献!我这边审查了一下,这里的话马上发版,但是有一些问题,您的这些答案可能跟不上v0.11了(本身也不着急,我计划放到下一个迭代的hhh)

1. 04-value-categories.md:题干代码被答案覆盖了

原文里带 bug 的练习代码块被就地改写成了修复版并放进了折叠答案。合并后「下面这段代码有一个严重的 bug……找到它并修复」下面直接就是折叠的参考答案,读者不展开答案就看不到题目,练习失效。本 PR 其他几处都是「题干保留 + 下方追加答案」的结构,请这一处也改成:

(练习描述)
(原始 bug 代码块,保持原样)

::: details 参考答案
(修复版代码 + 编译运行 + 输出)
:::

2. 04-value-categories.md:static 方案作为主答案的教学导向问题

题目自带的提示是「这个函数应该返回值还是返回引用?」——本章的教学意图是让学习者意识到这里应该按值返回。而参考答案用 static int result 保住了引用,却没有提示它的坑:

int& m = get_max(3, 7);
int& n = get_max(10, 2);   // 此刻 m 也变成 10:上一次返回的引用被下次调用作废

此外还有线程安全问题。建议主答案改为按值返回;如果想展示 static 变体,可以作为附注并写明上述两个限制。

还有一些其他的小问题

  • 03 练习三的题干提了思考题(const int& vs int 传小类型的性能差别、什么类型适合 const T&),答案只有代码没有回应,建议补两三句;
  • 04 中 int& 被改排为 int &、原提示行落到了答案块之后,建议复原;
  • ch01 就用到了 std::clamp(算法章节内容),这个可能有点超纲了,可以咱们手动写一个简单的,clamp可以说——后续算法库会讲解到!

期待更新!

@xiaoshuaijie

Copy link
Copy Markdown
Contributor Author

好的好的,我修完这次的问题我先自己学习,等v0.11版本再提交答案,其实在家的学习时间少一点,我觉得自己学的太慢了哈哈,以后一篇一篇的提交

@xiaoshuaijie

Copy link
Copy Markdown
Contributor Author

1.04-value-categories.md:题干代码被答案覆盖了这个问题我检查时没有发现粗心了,
2.std::clamp(这个不小心用习惯了,哈哈,原来我初始化用的是int a{0}文章C语言章节的C++链接讲的防止隐形转换和窄变换,发现后面全是int a=0,我也统一了,
3.04-value-categories.md方案static作为主答案的教学导向问题这个我理解错意思了以为修一下问题就好
马上修

@Charliechen114514

Copy link
Copy Markdown
Member

好的好的,我修完这次的问题我先自己学习,等v0.11版本再提交答案,其实在家的学习时间少一点,我觉得自己学的太慢了哈哈,以后一篇一篇的提交

嗯嗯不着急的,这个没人催促,而且如果大量赶进度,造成质量下滑,其实并不太好,这一点我自己也在反思的,慢慢来不着急,设计好一个就提交一次就好,这样我审查压力也会小很多的

@xiaoshuaijie

Copy link
Copy Markdown
Contributor Author

好的好的,我之前有一点基础所以做的快一点,技术没到位问题有点多哈哈,快开学了,开学时要不研究一天C++,要不就是忙其他的,那个可能快一点,在家老是玩哈哈

@Charliechen114514

Copy link
Copy Markdown
Member

okok我发好版了,现在慢慢审查PR哈,感谢贡献~

@xiaoshuaijie

Copy link
Copy Markdown
Contributor Author

好的好的辛苦了

@xiaoshuaijie xiaoshuaijie changed the title docs(vol1): 补充C++的类型与值类别的练习参考答案 docs(cpp): 补充C++的类型与值类别的练习参考答案 Aug 29, 2026
@Charliechen114514

Copy link
Copy Markdown
Member

OKOK,这里的话已经同步好一些超级小的小问题了,不用您费心改,CI跑完就合并~

@Charliechen114514
Charliechen114514 merged commit 49b3c07 into Awesome-Embedded-Learning-Studio:main Aug 29, 2026
4 checks passed
@xiaoshuaijie
xiaoshuaijie deleted the C++11_exe branch August 30, 2026 09:12
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