当我使用:
if( a>=0 && a<100 && b>=0 && b<200 )
一切正常,但如果我使用:
if( 0<=a<100 && 0<=b<200 )
我的程序崩溃了。a 和 b = 浮动。有人可以告诉我有什么区别吗?
当我使用:
if( a>=0 && a<100 && b>=0 && b<200 )
一切正常,但如果我使用:
if( 0<=a<100 && 0<=b<200 )
我的程序崩溃了。a 和 b = 浮动。有人可以告诉我有什么区别吗?
0<=a<100
实际上是(0<=a)<100
。由于(0<=a)
是布尔值,它的值始终为 0 或 1(真或假),因此表达式变为0<100
(or 1<100
),它始终为真。
a
由于您使用and来索引数组b
,因此错误的边界检查会导致越界访问,这会使您的应用程序崩溃。
它很可能会崩溃,因为即使 a 和 b 超出范围并且可能导致内存访问问题,条件也会评估为真。
0<=x<200
没有做你认为它在 C++ 中所做的事情。C++ 不允许您像那样将比较链接在一起,您需要这样做0 <= x && x < 200
。