-2

你能解释一下这段代码吗,记住写它的人是用它来教我前缀和后缀递增之间的区别

int main()
{
    const int ROWS = 3;`enter code here`
    const int COLUMNS = 3;`enter code here`
    char board[ROWS][COLUMNS] = {{'O', 'X', 'O'}, {' ', 'X', 'X'}, {'X', 'O', 'O'}};
    cout << "Here’s the tic-tac-toe board:\n";




    int i = 0;
    int j = 0;
    while ( i < ROWS) {
        cout<<board[i][j];

        j++;

        if (j >= COLUMNS) {
            j = 0;
            i++;
            cout << endl;
        }
    }

}
4

1 回答 1

2

该代码似乎没有显示后缀和前缀增量之间的任何区别,无论如何它是这样工作的:

后置

int x = 10;
cout<< (x++); //output: 10
//now x is 11

前缀

int x = 10;
cout<< (++x); //output: 11 (and x is already 11)

基本上,后缀增量只会在调用它的操作之后显示其效果。前缀增量将立即发挥其作用,因此增量值已经在调用它的命令中使用。

如果增量是孤立的,即不在操作内部使用,则基本相同:

for(int i = 0; i < 10; i++)   =   for(int i = 0; i < 10; ++i)

关于您的代码,它只是按以下顺序遍历矩阵的所有插槽:

(0,0), (0,1), (0,2), (1,0), (1,1), (1,2), (2,0), (2,1), (2,2)

When j >= COLUMNS, 表示(0,0), (0,1), (0,2)已经访问过,所以可以通过i++(i表示行索引) 转到下一行,因为 row 的所有列i都已访问过。这样做j = 0会将列重置为开头(j表示列索引)。

于 2020-07-23T01:02:12.293 回答