/QIfist(取消 _ftol)

更新:2007 年 11 月

当需要从浮点型转换为整型时,取消调用 Helper 函数 _ftol

/QIfist

备注

说明:

/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 上使用。

说明:

默认情况下,/QIfist 是无效的,因为舍入位数也会影响浮点到浮点的舍入(在每次计算后出现),因此,当设置 C 样式(向零方向)舍入的标志时,浮点计算可能会不同。如果代码取决于截断浮点数的小数部分的预期行为,则不应使用 /QIfist。如果没有把握,请不要使用 /QIfist

在 Visual C++ 2005 中,已不推荐使用 /QIfist。编译器极大地提高了浮点到整数的转换速度。有关更多信息,请参见Visual C++ 2005 中不推荐使用的编译器选项

在 Visual Studio 开发环境中设置此编译器选项

  1. 打开此项目的“属性页”对话框。有关详细信息,请参见如何:打开项目属性页

  2. 单击“C/C++”文件夹。

  3. 单击“命令行”属性页。

  4. 在“附加选项”框中键入编译器选项。

以编程方式设置此编译器选项

请参见

参考

/Q 选项(低级别操作)

编译器选项

设置编译器选项