gpt4 book ai didi

c - 为什么for循环不会终止?

转载 作者:太空宇宙 更新时间:2023-11-04 02:26:49 25 4
gpt4 key购买 nike

我的功能:

int checkSE(disk board[][SIZE], disk hypotheticalDisk)
{
int i;
int j;
int row;
int col;
int player;
int opponent;
int checkSEflag;

player = hypotheticalDisk.type;
(player == 0) ? (opponent = 1) : (opponent = 0);

row = hypotheticalDisk.pos.row;
col = hypotheticalDisk.pos.col;

checkSEflag = 0;

for (i = row + 2, j = col + 2; ((i < SIZE) && (j < SIZE) && (checkSEflag == 0)); i++, j++)
{
if (board[i][j].type == player)
{
for (--i, --j; board[i][j].type == opponent; i--, j--)
{
if (i == row && j == col)
{
checkSEflag = 1;
break;
}
}
}
printf("\n%d and %d and %d", i, j, checkSEflag);

}
return checkSEflag;
}

我的输出:

2 and 3 and 0

2 and 3 and 0

2 and 3 and 0

2 and 3 and 0

2 and 3 and 0

...

它还在继续......

我希望 i 和 j 都增加,直到它们等于 SIZE(SIZE 预定义为 8)或直到 checkSEflag 被分配为等于 1。

看起来 i 和 j 的值并没有改变......我试着把它们从循环条件中取出来,而是把它们放在在循环体中,尽管这并没有改变任何东西。

我怀疑后增量运算符只是决定不工作,所以我一定是做错了什么,有什么想法吗?

最佳答案

这两行:

for(i = row+2, j = col+2; ((i < SIZE) && (j <SIZE) && (checkSEflag == 0)); i++, j++)
...
for(--i, --j; board[i][j].type == opponent; i--, j--)

所以,你既递增又递减 (i,j);尝试在这些周围散布 printfs 并查看您是否在每次迭代中都递增和递减 i,j ...

关于c - 为什么for循环不会终止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49958515/

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