次の C - コードを検討してください。
struct ScoredGamestate
{
GameState88 gameState;
int whitePlayerScore;
};
int bestScore;
assert(scoredState->whitePlayerScore > -1000 &&
scoredState->whitePlayerScore < 1000);
if (scoredState->gameState.playerOnMove == PlayerWhite)
{
bestScore = scoredState->whitePlayerScore;
}
else
{
bestScore -(scoredState->whitePlayerScore);
}
assert(bestScore > -1000 && bestScore < 1000);
コードの後、bestScore は常に +/- "whitePlayerScore" であることは論理的です。
しかし、私のデバッガー (visual studio 2010 C++ Express Edition) では、"whitePlayerScore" は 50 ですが、bestScore は -8908234 のようになります。
(最初のアサーションは起動しませんが、常に 2 番目のアサーションは起動します)
これはどのように起こりますか?