-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 (true または false) のいずれかです。したがって、式は0<100(or 1<100) になり、常に true になります。

aandを使用して配列にインデックスを付けているbため、境界チェックが間違っていると、境界外アクセスが発生し、アプリケーションがクラッシュします。

于 2012-07-12T12:32:02.143 に答える
-1

a と b が範囲外であっても条件が true と評価され、メモリ アクセスの問題が発生する可能性があるため、おそらくクラッシュします。

于 2012-07-12T12:39:51.987 に答える
-2

0<=x<200あなたが C++ で行うと思っていることをしません。C++ では、このように比較を連鎖させることはできません。実行する必要があります0 <= x && x < 200

于 2012-07-12T12:32:50.160 に答える