当我使用:
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。