c++ - 我无法理解特定的语法
问题描述
我无法理解特定语法在一段代码中的作用。我了解代码总体上完成了什么,我只是想准确了解它是如何工作的,所以它不再只是“魔术”。
我遇到问题的行是最后一行,但是我确实了解 = 运算符之前发生的事情。我难以理解的部分是操作数之后发生的事情。更具体地说,这部分:
L" ABCDEFG=#"[pField[y*fieldWidth + x]];
高级代码旨在遍历 2D 数组,然后将其转换为 1D 数组,检查每个部分的 int 值,然后将特定符号绘制到数组中的该位置,稍后显示在终点站。
不确定这是否重要,但您可能需要上下文。数组 pField 是一个保存实际游戏的棋盘的数组,如果数组中的一块代表棋盘,则它包含 9,否则为 0。实际上已经有一个与 pField 数组相关的堆栈溢出,我把它留在这里我无法理解一段代码中使用的语法
我的问题是,我理解代码在高层次上做了什么,但我不明白用来让它做它应该做 L" ABCDEFG=#"[pField[y*fieldWidth + x]];
的语法,是我真的不确定我是什么的语法米看着,甚至这叫什么。
这是完整的循环和逻辑结构:
wchar_t *screen = new wchar_t[nScreenWidth*nScreenHeight];
for (int x = 0; x < fieldWidth; x++)
for (int y = 0; y < fieldHeight; y++)
screen[(y + 2)*nScreenWidth + (x + 35)] = L" ABCDEFG=#"[pField[y*fieldWidth + x]];
解决方案
L" ABCDEFG=#"[pField[y*fieldWidth + x]];
是一段语法,我真的不确定我在看什么,甚至不知道这叫什么。
让我们分解一下,所以下面
L" ABCDEFG=#"
有类型
wchar_t const (&) [11]
你可以检查一下
static_assert(std::is_same_v<decltype(L" ABCDEFG=#"), wchar_t const (&) [11]>);
代码所做的是索引该数组,结果为:
pField[y*fieldWidth + x]
推荐阅读
- powerbi - 发布 power bi 报告时度量显示为空白
- java - Intellij 在运行时不会检测到代码更改
- python - 为什么在 Kivy 中创建方法时需要“实例”变量?
- ios - 将 Unreal Engine 4 项目嵌入到另一个应用程序中
- azure - 创建 VM 时将 Azure Fileshare 挂载到 Azure VM
- pip - 为什么 pip3 install 突然不能在虚拟环境下工作
- javascript - 如何在 Mongoose 的模型定义中使用另一个模型
- python - 使用请求模块 Python 3 在 POST 中出现致命错误
- python - Python:为什么返回时出现list out of index错误,但打印时不出现
- python - protoc : 术语“protoc”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称