/QIfist (_ftol を呼び出さない)
削除されました。 浮動小数点型から整数型への変換が必要なときには、ヘルパー関数 _ftol
を呼び出しません。
構文
/QIfist
解説
Note
/QIfist は x86 に対応するコンパイラでのみ使用できます。このコンパイラ オプションは x64 や ARM に対応するコンパイラでは使用できません。
_ftol
関数では、浮動小数点型から整数型への変換に加えて、浮動小数点制御ワードのビット 10 と 11 を設定して、FPU (Floating-Point Unit) の丸めモードをゼロ (切り捨て) にします。 したがって、浮動小数点型から整数型への変換は、ANSI C 規格どおりに行われ、小数部分を破棄することが保証されます。 /QIfist を使用すると、この保証が適用されません。 丸めモードは、Intel 社のリファレンス マニュアルに示されたとおり、次の 4 とおりのうちのいずれかになります。
一番近い値に丸める (中間の場合は偶数)。
負の無限大に丸める。
正の無限大に丸める。
ゼロに丸める。
C のランタイム関数 _control87、_controlfp、__control87_2 を使用して、FPU の丸め動作を変更できます。 FPU の既定の丸めモードでは、"一番近い値に丸められます"。/QIfist を使用すると、アプリケーションのパフォーマンスが向上しますが、それにはリスクが伴います。 運用環境で /QIfist を使用してビルドしたコードを使用する場合は、その前に、丸めモードの影響を受けるコード部分を十分にテストする必要があります。
/arch (x86) と /QIfist を同じコンパイル単位で使用することはできません。
Note
ビットの丸め動作により、すべての計算の後で浮動小数点も丸められるため、/QIfist は既定で無効です。このため、C スタイルの丸め (つまりゼロに丸める) のフラグを設定すると、浮動小数点の計算が異なる場合があります。 浮動小数点数の小数部分の切り捨てについて予想される動作にコードが依存する場合は、/QIfist を使用しないでください。 不明な場合は、/QIfist を使用しないでください。
/QIfist オプションは、Visual Studio 2005 から非推奨とされます。 浮動小数点型から整数型への変換処理の速度が飛躍的に向上しました。 非推奨のコンパイラ オプションの一覧については、「カテゴリ別のコンパイラ オプション」の「非推奨および削除されたコンパイラ オプション」をご覧ください。
Visual Studio 開発環境でこのコンパイラ オプションを設定するには
プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。 詳細については、Visual Studio での C++ コンパイラとビルド プロパティの設定に関する記事を参照してください。
[構成プロパティ]>[C/C++]>[コマンド ライン] プロパティ ページを選択します。
[追加のオプション] ボックスにコンパイラ オプションを入力します。
このコンパイラ オプションをコードから設定するには
- 以下を参照してください。AdditionalOptions