0

変数の値をチェックする必要がありvi_theIndexます。ある時点での値は 65 です。

がゼロ以上かつ 32 より小さいかどうかを確認したいのですが、vi_theIndex今は次のようにしています。

long long vi_theIndex = 65;
if ((vi_theIndex >= 0) && (vi_theIndex < 32) )
 {
   //Case true
 }
else
{
   //Case false
}

65 の結果が間違っていることに気付きました。2 番目のケースが表示されるはずですが、最初のケースが true になります。どうしてこれなの?

私はこれを試しました:

long long vi_theIndex = 65;

bool limitFlag1, limitFlag2;

limitFlag1 = (vi_theIndex <= 0);
limitFlag2 = (vi_theIndex = 65);

limitFlag2true にlimitFlag1なって未定義になると、デバッガーはブレークポイントで停止しません。C は '<'、'<='、または '>' 記号を理解していないようです。これは、次のように「<」または「>」記号を単独で使用した場合にも発生します。

limitFlag1 = (vi_theIndex < 0);

limitFlag1定義されていません。

誰かがこれに光を当てることができますか?

4

1 に答える 1

2

最初の例で実際のコードを表示してはいけません-あなたが言うように、「case false」を実行する必要があります。

2 番目の例には問題がvi_theIndex = 65ありvi_theIndex == 65ます。あなたが持っているステートメントは常に真実です。 limitFlag1になります0-「未定義になる」とはどういう意味かわかりません-ここにも実際のコードを表示していませんか?

于 2012-04-11T05:57:14.173 に答える