首页 > 解决方案 > 我无法理解特定的语法

问题描述

我无法理解特定语法在一段代码中的作用。我了解代码总体上完成了什么,我只是想准确了解它是如何工作的,所以它不再只是“魔术”。

我遇到问题的行是最后一行,但是我确实了解 = 运算符之前发生的事情。我难以理解的部分是操作数之后发生的事情。更具体地说,这部分:

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]];

标签: c++

解决方案


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]

推荐阅读