为什么我在这个函数中出现这个错误?

时间:2015-05-25 23:50:41

标签: function

int checkWinDiagonals(char board[N][M])
{

for(int i = 0; i < (N-3); i++)
{
    for(int j = 0; j < (M-3); j++)
    {
 if(board[i][j] != ' ' && board[i][j] == board[i+1][j+1])
        {
if (board[i][j] == board[i+2][j+2] && board[i][j] == board[i+3][j+3])
    {
      return 1;
    }

        }
    }
}

for(int i = 0; i < (N-3); i++)

{
 for(int j = 3; j < M; j++)
{
if(board[i][j] != ' ' && board[i][j] == board[i+1][j-1])
    {

if( board[i][j] == board[i+2][j-2] && board[i][j] == board[i+3][j-3])
        {
            return 1;
        }
    }
}
return 0;
 }
}

我得到这个错误&#34;控制到达非空函数的结束&#34;。忘记int main()因为这只是它不起作用的代码的一部分。我必须放回(东西);在某个地方?

1 个答案:

答案 0 :(得分:0)

您应该使用一致的缩进真正格式化您的代码,以便更容易发现 lot 这样的错误。但我怀疑问题就在这里:

//...
        }
        return 0;
    }
    // right here
}

如果这些循环没有任何内容可以迭代并完全跳过,那么在运行时会发生什么?或者各种if块不评估为true并被跳过?到达函数的末尾并且没有返回任何内容,但声明该函数返回int,因此必须返回。

您需要构建代码以始终在任何逻辑情况下返回值。在这种情况下,可能涉及在前面的逻辑没有任何结束时返回默认值。