更新:2007 年 11 月
当需要从浮点型转换为整型时,取消调用 Helper 函数 _ftol。
/QIfist
备注
| .gif) 说明: | 
|---|
| /QIfist 仅仅可用于面向 x86 的编译器中;此编译器选项不可用于面向 x64 或 Itanium 的编译器中。 | 
除了从浮点型转换为整型外,_ftol 函数还通过设置控制字的第 10 位和第 11 位来确保浮点单元 (FPU) 的舍入模式为向零方向(截断)。这保证从浮点型转换为整型时的操作正如 ANSI C 标准所描述的一样(丢弃数字的小数部分)。而使用 /QIfist 时,不再保证获得此结果。舍入模式应是记录在 Intel 参考手册中的四种模式之一:
- 舍入为最接近的整数(若等距则为偶数) 
- 向负无穷大方向舍入 
- 向正无穷大方向舍入 
- 向零方向舍入 
可以使用 _control87, _controlfp, __control87_2 C 运行时函数修改 FPU 的舍入行为。FPU 的默认舍入模式为“舍入为最接近的整数”。使用 /QIfist 可以改善应用程序的性能,但并不是没有风险。在生产环境中信任用 /QIfist 生成的代码前,要彻底测试对舍入模式敏感的代码部分。
/arch(最小 CPU 结构) 和 /QIfist 不能在同一 compiland 上使用。
| .gif) 说明: | 
|---|
| 默认情况下,/QIfist 是无效的,因为舍入位数也会影响浮点到浮点的舍入(在每次计算后出现),因此,当设置 C 样式(向零方向)舍入的标志时,浮点计算可能会不同。如果代码取决于截断浮点数的小数部分的预期行为,则不应使用 /QIfist。如果没有把握,请不要使用 /QIfist。 | 
在 Visual C++ 2005 中,已不推荐使用 /QIfist。编译器极大地提高了浮点到整数的转换速度。有关更多信息,请参见Visual C++ 2005 中不推荐使用的编译器选项。
在 Visual Studio 开发环境中设置此编译器选项
- 打开此项目的“属性页”对话框。有关详细信息,请参见如何:打开项目属性页。 
- 单击“C/C++”文件夹。 
- 单击“命令行”属性页。 
- 在“附加选项”框中键入编译器选项。 
以编程方式设置此编译器选项
- 请参见 AdditionalOptions。