問題タブ [range-checking]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
delphi - コードのごく一部についてのみ、Delphi の範囲チェックをオフにします。
ファイルの一部の範囲チェックをオフにするにはどうすればよいですか。オフにするのは簡単ですが、後でプロジェクト設定に戻すにはどうすればよいですか? 以下の疑似コードはそれを説明するはずです:
c++ - 指定された値がタイプの範囲内にあるかどうかをコンパイル時にチェックします
これを確認することは可能ですか?
IntType
これが意味するのは、ユーザーによって提供された値が(std整数型のいずれかである可能性がある)型に「適合する」ことを確認することは可能ですか?たとえば、次のようなものを検出したいと思います。
fortran - 配列の境界を明確に上書きするときにランタイムエラーが発生しないのはなぜですか?
範囲を超えて配列を割り当てるプログラムがあり、実行時エラーがスローされることを期待していました。それでもエラーはまったく発生せず、プログラムは宣言されていないメモリへの書き込みに進みます。これを防ぐためのコンパイラオプションはありますか?示されているメモリダンプを使用すると、この範囲の超過が現実のものであることが明らかです。これをキャッチするために変数または引数の仕様を宣言する方法はありますか?明らかにこれは明らかなケースですが、F77派生コードの数千行を維持するように任命された場合、これが起こっている可能性があるかどうかは(私には)必ずしも明確ではありません。
コンパイラーはIntelFortran2011 XEであり、バイト仕様を使用しているのは、それでINTEGER*4
何が得られるかを知っているからです。
ランタイムチェックのコンパイラオプションは次のとおりです。
delphi - 「i := i + 1」が整数型とそれより大きい型の範囲チェック エラーを出さないのはなぜですか?
検討:
i
Byte、Word、Shortint、または TinyInt として宣言すると、予想どおり、範囲チェック エラーが発生します。i
LongWord、Cardinal、Integer、LongInt、または Int64 として宣言すると、while ループを通過するだけで、上限を超えたときに取得される負または 0 の値が表示さi
れます。
Delphi 7 は、32 ビットおよび 64 ビットの数値の範囲チェックをサポートしていませんか?
delphi - インターフェイスのないユニットに{$RangeCheckson}を設定できますか?
多数のフォームとユニット(インターフェイスなし)を含むデルファイプロジェクトがあります。「{$ RangeCheckson}」を配置したフォームは範囲外の例外をキャッチしますが、クラスを含むユニットに追加すると、キャッチされません。例外をキャッチします。そのユニットのインデックス例外をキャッチするのに役立ちますか?
java - 正の数と負の数のRangeCheck
私はグラフのある小さなゲームに取り組んでいます。目的の場所(上限と下限で指定)が満たされていないときに(0.5以内で)アクションを実行するという考え方です。たとえば、(7,7)をターゲットにすると、xとyが(この場合は両方とも)6.5から7.5の間にあるときに、ループが停止するはずです。
ただし、次のような条件があると、負の数が表示されたときに問題が発生します。
例:ターゲット(-7、-7)がある場合、x値またはy値のいずれかが範囲内にあるとき、ループは停止します。両方ではありません。
基本的に、xまたはyが正であるかどうかに応じて、4つの異なるループを作成するという考えがありました。しかし、もっと簡単な方法があるかどうか疑問に思っていますか?(私はMath.abs()を使用して負の数を打ち消そうとしましたが、これは機能しましたが、(-3、-3)宛ての何かが(3,3)で停止する可能性があります)
c++ - 整数型がおそらく異なる (整数) 型の値に適合するかどうかをチェックする関数
プリミティブ データ型が潜在的に異なるプリミティブ データ型の値に適合するかどうかをチェックするテンプレート化された関数を作成することは可能ですか? とりあえずスコープを整数型に限定しましょう。
より正確には、コンパイラの警告 (ブール式は常に true/false、符号付き/符号なしの比較、未使用の変数) を取得せずに、コンパイラの警告チェックを無効にすることなく、「すべてに適合する」テンプレート化された関数を作成することは可能ですか? また、関数は実行時のチェックを可能な限り制限する必要があります (すべての些細なケースはコンパイル時に除外する必要があります)。可能であれば、C++11 などの拡張機能の使用は避けたいと思います (「古い」C++ の「迅速な」代替が存在しない限り)。
注: 「値」はコンパイル時には不明であり、その型のみが不明です。
予想される動作の例:
出力:
ここで生成されたアセンブリを確認してください。
この質問はこの投稿に触発されました
java - 例外を使用して配列の境界をチェックしても問題ありませんか?
指定された座標が配列内にあるかどうかを確認したい。
私はそのようにすることができますか?それはそれを行う効率的な方法ですか?
c++ - C++ で反復子を拡張する
別のイテレータをカプセル化し、範囲チェックを実行するイテレータを実装しようとしています。したがって、私はそのイテレータから次のように拡張しています:
コンストラクターで渡されるイテレーターを使用して、範囲チェックを実行したいと考えています。私の考えは、「this」イテレーター (つまり r_iterator) が指すものを、コンストラクターからの「begin」イテレーターが指す要素に設定することです。たとえば、operator++ などの特定のメソッドをオーバーライドし、範囲チェックを実行してから、拡張しているクラスのスーパー メソッドを呼び出すことができるようにしたいと考えています。
したがって、STL Iterator クラスを拡張していると仮定して、「this」イテレーター (r_iterator) が指す要素を何らかの方法で設定できるかどうかを知りたいと思います。
残念ながら、C++ リファレンスでそれに関する情報を見つけることができませんでした。
よろしくお願いします