私が使用するとき:
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 (true または false) のいずれかです。したがって、式は0<100
(or 1<100
) になり、常に true になります。
a
andを使用して配列にインデックスを付けているb
ため、境界チェックが間違っていると、境界外アクセスが発生し、アプリケーションがクラッシュします。
a と b が範囲外であっても条件が true と評価され、メモリ アクセスの問題が発生する可能性があるため、おそらくクラッシュします。
0<=x<200
あなたが C++ で行うと思っていることをしません。C++ では、このように比較を連鎖させることはできません。実行する必要があります0 <= x && x < 200
。