C/C++ で整数値をキャップするかオーバーフローするかを選択できますか? それとも、コンパイルされたものは依存していますか?
user2341104
質問する
697 次
3 に答える
3
あなたが参照する「キャッピング」は「飽和」として知られています。デジタル シグナル プロセッサ (DSP) がハードウェアで飽和をサポートするのは一般的ですが、ほとんどのマイクロプロセッサは自然にオーバーフローとラップアラウンドを起こします。たとえば、MMX などの DSP 拡張をサポートするプロセッサは、飽和もサポートします。
サチュレーションの言語サポートは、通常、コンパイラの拡張機能、組み込み関数、およびライブラリによって行われます。おそらく C++ では、算術型を飽和させるためのテンプレート クラスを作成することが可能です。
この質問に対する私の答えから:
ISO/IEC JTC1 SC22 WG14 N1169 (プログラミング言語 - C - 組み込みプロセッサをサポートする拡張機能) は、
_Sat
データ型を飽和させるための型修飾子を指定します。どのコンパイラでも使用しようとしたことはありませんが、GCC 4.x のドキュメントに含まれています。VC++ 2003 以降では、飽和演算を可能にするMMX 組み込み関数がサポートされています。
飽和演算をハードウェアでサポートしていないプロセッサでは、それを使用するとパフォーマンスが低下する可能性があることに注意してください。
于 2013-05-26T10:23:51.843 に答える