算術オーバーフロー プログラミング環境と算術オーバーフロー

Weblio 辞書 > 辞書・百科事典 > 百科事典 > 算術オーバーフローの解説 > プログラミング環境と算術オーバーフロー 

算術オーバーフロー

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/04/07 17:16 UTC 版)

プログラミング環境と算術オーバーフロー

プログラミング言語や実行環境の中には、算術オーバーフローを検出したときに例外をスローするなど、エラーハンドリングを容易にしてくれるものもある。

C#ではcheckedキーワード(checkedステートメントやchecked演算子)を使うことで、整数演算によってオーバーフローが発生したときSystem.OverflowExceptionがスローされるようになる[5]。ただし浮動小数点演算の場合はスローされない。他にも、整数型Tの引数を受け取るSystem.Math.Abs()メソッドのオーバーロードは、T.MinValueに対してSystem.OverflowExceptionをスローする[6]

JavaはC#のcheckedに相当する機能を直接持たない。ただし、Java 8でMathクラスに追加されたExactメソッドを使うと、オーバーフローが発生したときにArithmeticExceptionがスローされる。

ISO C/C++では、SIGFPEシグナルがサポートされている[7]。シグナルハンドラーを設定すると、POSIXではオーバーフロー発生時にFPE_INTOVFまたはFPE_FLTOVFのエラーコードを伴うシグナルが発生する[8]C++BuilderではFPE_INTOVFLOWまたはFPE_OVERFLOWとなる[9]Microsoft Visual C++では整数オーバーフローによるシグナルは発生せず、浮動小数点数オーバーフロー発生時に_FPE_OVERFLOWのエラーコードを伴うシグナルが発生する[10]。ただし、SIGFPEのシグナルハンドラーからは復帰するべきではなく、そのまま終了するべきとされている[11]

C99およびC++11では、直前の演算によって浮動小数点例外が発生したかどうかをチェックできるテスト関数fetestexcept()を標準化している[12][13]。オーバーフローを検出するにはテストビットとしてFE_OVERFLOWを使用する[14]

Microsoft Visual C++のランタイムライブラリは、デフォルトではすべての浮動小数点例外をマスクしているが、_controlfp_s()関数などを使ってオーバーフローの浮動小数点例外を有効化すると、Microsoft Windows固有のエラー処理機構である構造化例外[15]をスローするようになる[16]。なお、制御ワードの設定はスレッドごとに管理されているため、浮動小数点例外を有効化する場合はスレッドごとに設定が必要となる[17]

DelphiC++Builderでは、浮動小数点演算でオーバーフローが発生した場合、System.SysUtils.EOverflowをスローする[18]。ただし、ARMアーキテクチャは浮動小数点例外をサポートしないため、すべての浮動小数点例外がマスクされている[19]。整数演算でオーバーフローが発生した場合、System.SysUtils.EIntOverflowをスローするが、プロジェクトのオーバーフローチェックが有効になっている必要がある[20]




「算術オーバーフロー」の続きの解説一覧



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「算術オーバーフロー」の関連用語

算術オーバーフローのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



算術オーバーフローのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアの算術オーバーフロー (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2024 GRAS Group, Inc.RSS