-1

現在、for ループから抜け出すために、変数「breakOK」を使用した非常に単純なチェックを使用しようとしています。パズル行列の現在の値が 46 に設定されているという条件が満たされると、関数が呼び出されて breakOK が 1 に設定され、ループから抜け出すことができます。ただし、以下のコードの if ステートメントで breakOK を使用すると、次のエラーが発生します。

sudoku.cc:482:13: error: 'breakOK' was not declared in this scope

sudoku.cc:485:11: error: 'breakOK' was not declared in this scope

Guess を同じ方法で宣言し、後でコード内で Guess を使用してもスコープ エラーが発生しないため、これは非常に奇妙です。また、ループ内で breakOK を 1 に設定しても、コンパイラは文句を言いません。どんな助けでも大歓迎です、私はこれにあまりにも長い間立ち往生しています!

int Guess = 0; // will be set to a value if a guess is ok

int breakOk = 0; // will be set to 1 if breaking out of loops is necessary

for (int row = 0; row < 9; row++)
{
  for (int col = 0; col < 9; col++)
  {
    if (puzzle.matrix[row][col].currentValue == 46)
    {

      Guess = guessValues(row, col, puzzle, tried, allowed);
      breakOk = 1;

    }
    if (Guess != 0)
    {
      tried[row][col].tries.push_back(Guess);
      //puzzle.decide(row, col, Guess);
      puzzle.matrix[row][col].currentValue = Guess;
    }
    if (breakOK == 1) // line 482
      break;
  }
  if (breakOK == 1) // line 485
    break;
}
4

3 に答える 3

4

宣言しますbreakOkが、チェックしbreakOKます。OK の大文字の K に注目してください。

于 2012-07-13T00:46:03.690 に答える
2

これは、変数が breakOk であり、breakOK を参照しているためです。

于 2012-07-13T00:46:10.207 に答える
2

breakOKと同じではありませんbreakOk。でケースを確認してくださいk

于 2012-07-13T00:46:31.763 に答える