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