gpt4 book ai didi

c++ - 我在理解一段代码中使用的语法时遇到麻烦

转载 作者:行者123 更新时间:2023-12-03 07:08:54 25 4
gpt4 key购买 nike

我已经看了一段时间了,我对这段代码可以做什么有一些想法,但是我不确定我是否正确理解了这段代码的语法。
代码遍历二维无符号字符数组,除非数组中的点表示,否则它的意思是用0填充数组。底部或侧面。如果是这种情况,请使用9代替数组中的点。
我感到困惑的部分是语句(pField[y*fieldWidth + x] =)我相信这是一个条件语句,我理解之后的逻辑,我的问题专门关于此条件,如果可能的话,应如何使用if语句解释它,如果不是有条件的陈述是什么样的陈述?


pField = new unsigned char[fieldWidth*fieldHeight]; // Create play field buffer

for (int x = 0; x < fieldWidth; x++) // Board Boundary

for (int y = 0; y < fieldHeight; y++)

pField[y*fieldWidth + x] = (x == 0 || x == fieldWidth - 1 || y == fieldHeight - 1) ? 9 : 0;

最佳答案

该代码使用二维数组,该二维数组在内存中分配为一维数组。表达式y*fieldWidth + x正在根据一对2D索引计算一个1D数组索引。
该数组代表一个矩形。该代码将9分配给表示矩形的左,右和底边(但不包括上边缘)的一维数组元素,并在一维数组元素中代表矩形其余部分的0
例如,一个5x5矩形如下所示:

9 0 0 0 99 0 0 0 99 0 0 0 99 0 0 0 99 9 9 9 9

The corresponding 1D array elements would look like this:

       x =  0 1 2 3 4 | 0 1 2 3 4 | 0 1 2 3 4 | 0 1 2 3 4 | 0 1 2 3 4
y = 0 0 0 0 0 | 1 1 1 1 1 | 2 2 2 2 2 | 3 3 3 3 3 | 4 4 4 4 4
---------------------------------------------------------
pField[] = 9 0 0 0 9 9 0 0 0 9 9 0 0 0 9 9 0 0 0 9 9 9 9 9 9
可以使用 ?:语句来重写三元 if运算符,如下所示:
int value;
if (x == 0 || x == fieldWidth - 1 || y == fieldHeight - 1)
value = 9;
else
value = 0;

pField[y*fieldWidth + x] = value;

关于c++ - 我在理解一段代码中使用的语法时遇到麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64199974/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com