我需要检查变量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
变为true且limitFlag1
变为未定义,调试器甚至不会在我的断点处停止。看起来C不理解'&lt;','&lt; ='或'&gt;'迹象。当我使用'&lt;'时也会发生这种情况。或'&gt;'像这里一样签名:
limitFlag1 = (vi_theIndex < 0);
limitFlag1
未定义。
有人可以对此有所了解吗?
答案 0 :(得分:2)
你不能在第一个例子中显示你的真实代码 - 如你所说,“case false”应该被执行。
您的第二个示例存在问题 - 您可能需要vi_theIndex = 65
而不是vi_theIndex == 65
。你拥有它的陈述总是如此。 limitFlag1
将是0
- 我不确定你的意思是“未定义” - 你是不是也在这里展示你的真实代码?