我在理解特定语法时遇到麻烦

时间:2020-10-07 00:19:46

标签: c++

我无法理解一段代码中特定语法的作用。我了解代码的总体效果,只是想确切地了解代码的工作原理,因此不再只是“魔术”。

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

L" ABCDEFG=#"[pField[y*fieldWidth + x]];

较高级别的代码旨在迭代2D数组,然后将其转换为1D数组,检查每个块是否具有其int值,然后在该数组中的那个位置绘制一个特定的符号,然后在终端中显示。

不确定这是否重要,但是您可能需要上下文。数组pField是一个将寄宿生保留到实际游戏中的数组,如果该数组的一部分代表寄宿生,则它包含9,否则包含0。实际上已经存在与pField数组相关的堆栈溢出,请放到这里I'm having trouble understanding the syntax used in a piece of code

我的问题是,我了解代码的高级功能,但我不了解使代码执行其应有的功能的语法,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]];

1 个答案:

答案 0 :(得分:4)

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]