我无法理解一段代码中特定语法的作用。我了解代码的总体效果,只是想确切地了解代码的工作原理,因此不再只是“魔术”。
我遇到麻烦的那一行是最后一行,但是我确实理解=运算符之前发生了什么。我难以理解的部分是操作数之后发生的事情。更具体地说,这部分是:
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]];
答案 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]