【问题标题】:Is there a Microsoft-specific (for Microsoft compiler) data type for floating point numbers是否有用于浮点数的 Microsoft 特定(用于 Microsoft 编译器)数据类型
【发布时间】:2021-04-27 22:49:40
【问题描述】:

微软的编译器是否有任何特定的数据类型来表示浮动数据点。我似乎只找到 float、double 和 long double

【问题讨论】:

  • 您为什么希望找到一个特定于 MSVC 的?现有的会做得很好。
  • 这是大学任务,我整天都在寻找。甚至查看了 MS 的编译器扩展,也没有找到任何东西。
  • 为什么需要另一个浮点类型?
  • 如果您阅读了文档 (docs.microsoft.com/en-us/cpp/cpp/…) 并且没有,那么显然答案是否定的。唯一一次你会发现没有实现的事情是这样记录的,如果这样的实现是通常需要或预期的。你不能发明一种数据类型,然后抱怨它没有记录在案。
  • 你设置的实际任务是什么;您似乎误解了它。关于浮点的唯一 Microsoft 特定功能是 doublelong double 具有相同的 64 位表示。在这方面,它与 gcc 不同,gcc 具有各种额外的浮点类型,long double 在某些目标上大于double。 (gcc.gnu.org/onlinedocs/gcc/Floating-Types.html)

标签: c types floating-point


【解决方案1】:

没有。在编写 Visual C++ v16 a.k.a Visual C++ 2019 时,不支持除 C 和 C++ 标准中定义的浮点数据类型之外的任何浮点数据类型。此外,与 Intel x86/x64 目标上的 GCC 不同,doublelong double 具有相同的 64 位表示。

这记录在https://docs.microsoft.com/en-us/cpp/cpp/fundamental-types-cpp?view=msvc-160

Intel x86/x64 FPU 在硬件中支持 80 位数据类型,但数据类型不直接支持。

另一方面,GCC 有许多扩展类型 https://gcc.gnu.org/onlinedocs/gcc/Floating-Types.html,包括用于匹配硬件的 __float80__float128long double 与 GCC 上的 double 不同。

【讨论】:

  • Re “long double 与 GCC 上的 double 不同”:可以通过 -mlong-double-64 等选项进行调整。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-06
  • 1970-01-01
  • 2022-06-15
  • 2014-11-26
  • 1970-01-01
  • 1970-01-01
  • 2015-07-14
相关资源
最近更新 更多