这些使我的程序停止运行的for循环有什么问题?

时间:2019-06-07 04:02:41

标签: c function for-loop

这些包含for循环的函数应该检查在国际象棋的垂直运动中,在初始坐标和最终坐标之间是否存在片段。 应该检查列(仅垂直)。

这些在另一个函数中运行,该函数检查尝试的移动是否有效。

但是,一旦我使用此代码运行程序,实际上运行了这些功能的代码就会停止。我不确定是否所有进程都停止了,但是它不打印任何应打印的内容。

我很确定问题出在此代码内,因为没有它,我的程序将正确运行。

我尝试在for循环中更改标识符,但这没有用。我相信问题与将“ fromr”加1有关。不这样做,代码就可以正常运行。但是我需要从以下内容检查功能,而不是fromr本身。

int checkVerticalPathwayWhite(int fromr, int fromc, int tor){
    fromr = fromr + 1;
    for(int r = fromr; r < fromr; r++){
        for(int c = fromc; c == fromc;){
            if (board[r][c] != &empty){
                printf("Pathway is not clear\n");
                return 0;
            }
        }
    }
    printf("Pathway is clear");
    return 1;
}

int checkVerticalPathwayBlack(int fromr, int fromc, int tor){
    fromr = fromr - 1;
    for(int r = fromr; r > tor; r = r-1){
        for(int c = fromc; c == fromc;{
            if (board[r][c] != &empty){
                printf("Pathway is not clear\n");
                return 0;
            }
    }
}
    printf("Pathway is clear");
    return 1;
}

如果在(fromr + 1)到(tor-1)之间的路径中有一个非空段,我希望该函数返回0,否则就返回1。

2 个答案:

答案 0 :(得分:1)

您的循环条件不正确。

  1. r初始化为fromr。条件r<fromr始终为假。

  2. c初始化为fromc。条件c==fromc为true,但是循环中没有增量。因此循环将无限运行。

答案 1 :(得分:0)

for(int c = fromc; c == fromc;)

那是一个无限循环。我想您想以某种方式更改c。