0

我需要检查一个变量vi_theIndex的值。在给定时刻,它的值为 65。

我想检查是否vi_theIndex大于或等于零并且小于 32。现在我这样做:

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

我意识到 65 的结果是错误的。第二种情况应该出现,但第一种情况是正确的。为什么是这样?

我试过这个:

long long vi_theIndex = 65;

bool limitFlag1, limitFlag2;

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

limitFlag2变为真并limitFlag1变为未定义,调试器甚至不会在我的断点处停止。看起来 C 不理解 '<'、'<=' 或 '>' 符号。当我像这里一样单独使用“<”或“>”符号时也会发生这种情况:

limitFlag1 = (vi_theIndex < 0);

limitFlag1没有定义。

有人可以对此有所了解吗?

4

1 回答 1

2

您不能为您的第一个示例显示您的真实代码 - 正如您所说,应该执行“case false”。

你的第二个例子有一个问题 - 你有vi_theIndex = 65,而不是vi_theIndex == 65你可能的意思。你所拥有的陈述总是正确的。 limitFlag1将是0-我不确定您所说的“变得未定义”是什么意思-您也没有在这里显示您的真实代码吗?

于 2012-04-11T05:57:14.173 回答