C++ Primer 第五版:第五章「语句」习题答案
第五章:语句
练习5.1
什么是空语句?什么时候会用到空语句?
只含有一个单独的分号的语句是空语句。如:
1 | ; |
如果在程序的某个地方,语法上需要一条语句但是逻辑上不需要,此时应该使用空语句。(建议做好注释说明空语句作用)
1 | //重复读入数据直至到达文件末尾或某次输入的值等于sought |
练习5.2
什么是块?什么时候会用到块?
用花括号括起来的语句和声明的序列就是块。
1 | { |
如果在程序的某个地方,逻辑上需要多条语句,而语法上只能容纳一条语句,此时应该使用块。
1 | while (val <= 10) { |
练习5.3
使用逗号运算符重写(参见4.10节,第140页)1.4.1节的 while 循环,使它不再需要块,观察改写之后的代码可读性提高了还是降低了。
1 | while (val <= 10) |
代码的可读性降低了。
练习5.4
说明下列例子的含义,如果存在问题,试着修改它。
1 | (a) while (string::iterator iter != s.end()) { /* . . . */ } |
- (a) 这个循环试图用迭代器遍历string,但是变量的定义应该放在循环的外面,目前每次循环都会重新定义一个变量,明显是错误的。
- (b) 这个循环的 while 和 if 是两个独立的语句,if 语句中无法访问 status 变量,正确的做法是应该将 if 语句包含在 while 里面,
练习5.5
写一段自己的程序,使用if else 语句实现把数字转换为字母成绩的要求。
练习5.6
改写上一题的程序,使用条件运算符(参见4.7节,第134页)代替if else语句。
C++ Primer 第五版:第四章「表达式」习题答案
第四章:表达式
练习4.1
表达式 5 + 10 * 20 / 2 的求值结果是多少?
105
练习4.2
根据4.12节中的表,在下述表达式的合理位置添加括号,使得添加括号后运算对象的组合顺序与添加括号前一致。
- (a) *vec.begin()
- (b) *vec.begin() + 1
1 | *(vec.begin()) |
练习4.3
C++语言没有明确规定大多数二元运算符的求值顺序,给编译器优化留下了余地。这种策略实际上是在代码生成效率和程序潜在缺陷之间进行了权衡,你认为这可以接受吗?请说出你的理由。
可以接受。C++的设计思想是尽可能地“相信”程序员,将效率最大化。然而这种思想却有着潜在的危害,就是无法控制程序员自身引发的错误。因此 Java 的诞生也是必然,Java的思想就是尽可能地“不相信”程序员。
练习4.4
在下面的表达式中添加括号,说明其求值过程及最终结果。编写程序编译该(不加括号的)表达式并输出结果验证之前的推断。
1 | 12 / 3 * 4 + 5 * 15 + 24 % 4 / 2 |
((12/3)*4) + (5*15) + ((24%4)/2)
实际输出结果:91。
练习4.5
写出下列表达式的求值结果。
1 | -30 * 3 + 21 / 5 // -90+4 = -86 |
练习4.6
写出一条表达式用于确定一个整数是奇数还是偶数。
1 | if (i % 2 == 0) /* ... */ |
练习4.7
溢出是何含义?写出三条将导致溢出的表达式。
溢出含义:当计算的结果超出该类型所能表示的范围时就会产生溢出。
1 | short svalue = 32767; ++svalue; // -32768 |
练习4.8
说明在逻辑与、逻辑或及相等性运算符中运算对象的求值顺序。
- 逻辑与运算符和逻辑或运算符都是先求左侧运算对象的值再求右侧运算对象的值,当且仅当左侧运算对象无法确定表达式的结果时才会计算右侧运算对象的值。这种策略称为短路求值。
- 相等性运算符未定义求值顺序。
VSCode配置总结笔记
1   下载及安装VSCode
- 下载:VSCode System Installer
- 安装:默认路径安装,选项额外添选上下文菜单(文件和目录)
镜像加速下载的方法:将下载链接URL中的stable
之前的字符全部改为https://vscode.cdn.azure.cn/
即可。
2   配置C/C++开发环境
2.1   MSVC CL编译器的安装和环境设置
- 下载:MSVC CL编译器(Visual Studio 2022 生成工具)
- 安装「Visual Studio 2022 生成工具」,然后勾选对应包下载安装
- 工作负荷:使用C++的桌面开发
- MSVC v143 - VS 2022 C++ x64/x8 6生成工具(最新)
- Windows 11 SDK (10.0.22621.0):建议选择最新的系统版本号
- 用于 Windows 的 C++ CMake 工具(包含CMake和Ninja)
- 单个组件
- 对 LLVM(clang-cl)工具集的 MSBuild 支持
- 适用于 Windows 的C++ Clang 编译器(18.1.8)
- MSVC v143 - VS 2022 C++ x64/x86 Spectre 缓解库(最新)
- 工作负荷:使用C++的桌面开发
- 分别添加程序路径到系统环境变量
Path
- CL编译器路径:
C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.42.34433\bin\Hostx64\x64
- CMake路径:
C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin
- Ninja路径:
C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja
- CL编译器路径:
- 拷贝
.vscode
配置文件夹
2.2   更新MSVC后找不到CL命令
使用Visual Studio Installer
更新MSVC后,编译器版本号可能会变更,如果在终端运行cl命令后提示找不到程序,需要手动更新两处地方的CL编译器路径:
- 系统环境变量
Path
.vscode
配置文件夹中的c_cpp_properties.json
3   VSCode源代码管理
对于新建的空仓库,使用clone命令克隆仓库后,第一次用vs code进行commit时,若使用「同步更改」命令提示说找不到远程仓库时,可以直接使用「推送到」命令。
4   Codeium扩展插件的帐号token获取及使用
一般直接通过Codeium Auth登录帐号即可使用扩展插件。
4.1   token获取
如果不想登录帐号,而是想要通过ctrl+shift+p
执行Codeium: Provide Authentication Token
命令输入token的话。首先需要获取token,获取方式:
- 方式一:官网直链获取(此直链是会提示关联vim扩展,但token都是通用的,同样适用于VSCode的扩展),直接在该网址中登录帐号即可获取「Provide Authentication Token」
- 方式二:参考token使用的1-4步骤。
4.2   token使用
- VSCode安装好Codeium扩展插件。
- 左下角,点击Codeium Auth登录按钮,首先插件会弹窗请求跳转到网页输入帐号登录。
- 直接关闭打开的网页,点击右下角「在线帐号登录」的cancel按钮。
- 之后插件会弹窗请求跳转到网页输入帐号登录,这个在线网址则是获取「Provide Authentication Token」。(如果已经提前获取到token,这里可以不登录网页帐号,直接关闭网页)
- 最后通过
ctrl+shift+p
执行Codeium: Provide Authentication Token
命令输入token即可正常登录。
5   拓展插件
5.1   LaTeX-Workshop
报错提示command 'latex-workshop.onEnterKey' not found
问题现象:在tex
文件中使用Enter
键会出现报错信息,提示command 'latex-workshop.onEnterKey' not found
,只有Ctrl+Enter
键才能正常输入回车。
解决方案:卸载LaTeX-Workshop
扩展插件,关闭VSCode
程序,确保VSCode
正常移除插件的缓存文件。然后重新打开VSCode
,重新安装LaTeX-Workshop
。
6   参考文献
[1] [Question] How can I get codeium auth token[EB/OL]. https://github.com/Exafunction/codeium.vim/issues/150.
[2] VsCode下载,使用国内镜像秒下载[EB/OL]. https://blog.csdn.net/bielaiwuyang1999/article/details/117814237.
CAD总结笔记
1   Autodesk CAD
1.1   版本下载
下载地址:
- Autodesk CAD 2024(简体中文版)
- Autodesk CAD 2023(简体中文版)
- Autodesk CAD 2022(简体中文版)
- Autodesk CAD 2021(简体中文版)
- Autodesk CAD 2020(简体中文版)
- Autodesk CAD 2019(简体中文版)
- Autodesk CAD 2018(简体中文版)
- Autodesk CAD 2016(简体中文版)
1.2   官方文档查阅
1.3   优化CAD性能
- 只用SHX字体,不要用系统真字体,例如宋体、黑体之类的粗字体。SHX的量级要远比TTF字体来得轻便,可以极大减小文件的尺寸,改善缩放平移以后的性能。
- 开启硬件加速
- 清理图面,善用清理命令及插件
2   浩辰CAD
2.1   版本下载
下载地址:
3   参考文献
[1] AutoCAD小秘密038:SHX大字体的通天塔[EB/OL]. https://zhuanlan.zhihu.com/p/52121478.
[2] 详解AutoCAD的.TTF字体和.SHX字体文件[EB/OL]. https://www.cadzxw.com/711.html.