C++ I';我很难理解一段代码中使用的语法
我已经研究了一段时间了,我对这段代码的功能有了一些想法,但我不确定我是否正确理解了代码的语法 代码在一个无符号字符的2D数组中迭代,这意味着用0填充数组,除非数组中的点代表;底部或侧面。如果是这种情况,则用9代替数组中的点 我感到困惑的部分是语句(C++ I';我很难理解一段代码中使用的语法,c++,C++,我已经研究了一段时间了,我对这段代码的功能有了一些想法,但我不确定我是否正确理解了代码的语法 代码在一个无符号字符的2D数组中迭代,这意味着用0填充数组,除非数组中的点代表;底部或侧面。如果是这种情况,则用9代替数组中的点 我感到困惑的部分是语句(pField[y*fieldWidth+x]=)我相信这是一个条件语句,我理解后面的逻辑,我的问题是关于这个条件语句的,如果可能的话,应该如何用if语句解释它?如果它不是条件语句,它是什么类型的语句 pField = new unsigned cha
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;
pField=新的无符号字符[fieldWidth*fieldHeight];//创建游戏区缓冲区
对于(int x=0;x
此代码将二维数组的空间分配到一维数组中,然后设置数组中的每个元素。具体地说,关于您询问的代码,在数组的左侧,逻辑从2D索引转换为1D索引。在赋值的右侧,通过将布尔谓词连接成结果布尔值来计算该值,然后通过三元运算符在返回0或9之间进行选择,并写入无符号字符数组元素。此代码将2D数组的空间分配到1D数组中,然后设置数组中的每个元素数组。具体地说,关于您询问的代码,在数组的左侧,逻辑从2D索引转换为1D索引。在赋值的右侧,通过将布尔谓词连接成结果布尔值来计算该值,然后通过三元运算符在返回0或9之间选择该值,并将其写入无符号字符数组元素。代码使用的是一个二维数组,该数组在内存中作为一维数组分配数组。表达式y*fieldWidth+x
从一对二维索引计算一维数组索引
数组表示一个矩形。代码将9
分配给表示矩形左、右和下边缘(但不是上边缘)的1D数组元素,并将0
分配给表示矩形其余部分的1D数组元素
例如,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
语句重写,如下所示:
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
int值;
如果(x==0 | | x==fieldWidth-1 | | y==fieldHeight-1)
数值=9;
其他的
数值=0;
pField[y*fieldWidth+x]=值;
代码使用的是在内存中作为一维数组分配的二维数组。表达式y*fieldWidth+x
从一对二维索引计算一维数组索引
数组表示一个矩形。代码将9
分配给表示矩形左、右和下边缘(但不是上边缘)的1D数组元素,并将0
分配给表示矩形其余部分的1D数组元素
例如,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
语句重写,如下所示:
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
int值;
如果(x==0 | | x==fieldWidth-1 | | y==fieldHeight-1)
数值=9;
其他的
数值=0;
pField[y*fieldWidth+x]=值;
它是[]
中的一个计算数组索引。它是[]
中的一个计算数组索引。感谢您的回复,我相信我已经理解了现在发生的事情。但有一件事是,它不算顶部为一个侧面。它就像一个没有盖子的长方形。啊,非常感谢你,这很有意义!然而,有一个问题是,1D数组中的第一个5x片段是否为9 0 0 9?是的,当y=0,x=0时,它在1D数组中的值不应该是9而不是0,因为它在2D数组中的y=0,x=0时的值是9?y=0,x=4也是一样。谢谢你的改变,雷米,我现在明白了。谢谢你的回答,我相信我现在明白了。但有一件事是,它不算顶部为一个侧面。它就像一个没有盖子的长方形。啊,非常感谢你,这很有意义!然而,有一个问题是,1D数组中的第一个5x片段是否为9 0 0 9?是的,当y=0,x=0时,它在1D数组中的值不应该是9而不是0,因为它在2D数组中的y=0,x=0时的值是9?y=0,x=4也是一样。谢谢你的改变,雷米,我现在明白了。