-4

当我使用:

if( a>=0 && a<100 && b>=0 && b<200 )

一切正常,但如果我使用:

if( 0<=a<100 && 0<=b<200 )

我的程序崩溃了。a 和 b = 浮动。有人可以告诉我有什么区别吗?

4

3 回答 3

12

0<=a<100实际上是(0<=a)<100。由于(0<=a)是布尔值,它的值始终为 0 或 1(真或假),因此表达式变为0<100(or 1<100),它始终为真。

a由于您使用and来索引数组b,因此错误的边界检查会导致越界访问,这会使您的应用程序崩溃。

于 2012-07-12T12:32:02.143 回答
-1

它很可能会崩溃,因为即使 a 和 b 超出范围并且可能导致内存访问问题,条件也会评估为真。

于 2012-07-12T12:39:51.987 回答
-2

0<=x<200没有做你认为它在 C++ 中所做的事情。C++ 不允许您像那样将比较链接在一起,您需要这样做0 <= x && x < 200

于 2012-07-12T12:32:50.160 回答