我已经看了一段时间了,我对这段代码可以做什么有一些想法,但是我不确定我是否正确理解了这段代码的语法。
代码遍历二维无符号字符数组,除非数组中的点表示,否则它的意思是用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数组索引。
该数组代表一个矩形。该代码将a分配给9
表示矩形的左,右和下边缘(但不包括上边缘)0
的一维数组元素,并在一维数组元素中代表矩形的其余部分。
例如,一个5x5矩形如下所示:
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
相应的一维数组元素如下所示:
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;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句